Skip to main content
 首页 » 编程设计

python之没有主键如何进行PUT请求

2025年05月04日18mfryf

我正在使用 DRF 为博客创建一个喜欢/不喜欢 api。我有 Like 表,其中包含“Post”、“User”和“isLike”字段。由于 Django 不能有复合键,我使用 unique_together 约束(“Post”和“User”)。

如果用户喜欢某个帖子,我会在 Like 表中创建一个条目。现在,如果用户想从帖子中删除他的喜欢或不喜欢该帖子,我需要这些(PUT/DELETE)方法的 Like 表中的条目主键。由于我知道“User”和“Post”,并且两者都是唯一的,我可以使用唯一字段执行(PUT/DELETE)方法吗?

模型类

class LikeDislike(models.Model): 
    """model for like counts""" 
    post = models.ForeignKey(Post, on_delete=models.CASCADE) 
    user = models.ForeignKey(CustomUser, on_delete=models.CASCADE) 
    isLike = models.BooleanField() 
 
    class Meta: 
        unique_together = (("post", "user"),) 

在 Like 表中创建条目的 View :

class LikeDislikeCreateView(generics.CreateAPIView): 
    queryset = models.LikeDislike.objects.all() 
    serializer_class = serializers.LikeDislikeSerializer 
 
    def perform_create(self, LikeDislikeSerializer): 
        LikeDislikeSerializer.save(user=self.request.user) 

我可以使用 ->/like/primary-key/更新喜欢/不喜欢,但我想使用“帖子”和“用户”详细信息。

请您参考如下方法:

当然,你可以 - 这只是覆盖 get_object() 的问题适本地在您的 View 中使用与 PK 不同的参数检索要修改或删除的对象。