【发布时间】:2019-09-09 07:24:37
【问题描述】:
我正在使用 DRF 为博客创建一个喜欢/不喜欢的 api。我有 Like 表,其中包含“Post”、“User”和“isLike”字段。由于 Django 不能有复合键,我使用 unique_together 约束(“Post”和“User”)。
如果用户喜欢某个帖子,我会在 Like 表中创建一个条目。现在,如果用户想从帖子中删除他的喜欢或不喜欢帖子,我需要这些(PUT/DELETE)方法的 Like 表中的条目主键。由于我知道“用户”和“发布”,并且两者都是唯一的,我可以使用唯一字段执行 (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 表中创建条目的视图:
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/ 更新喜欢/不喜欢,但我想使用“发布”和“用户”详细信息。
【问题讨论】:
-
我删除了 sql 标签,因为问题有 unique_together/primary key 关键字,所以我包含在内,谢谢。
标签: python django django-rest-framework