我正在使用 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 不同的参数检索要修改或删除的对象。
