如何在没有主键的情况下执行 PUT 请求?

Vis*_*rma 2 python django django-rest-framework

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

如果用户喜欢某个帖子,我会在“喜欢”表中创建一个条目。现在,如果用户想要从帖子中删除他的“喜欢”或想要不喜欢该帖子,我需要这些(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"),)
Run Code Online (Sandbox Code Playgroud)

在 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)
Run Code Online (Sandbox Code Playgroud)

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

AKX*_*AKX 5

当然,您可以\xe2\x80\x93,这只是在视图中适当覆盖的问题,get_object()以使用与 PK 不同的参数检索要修改或删除的对象。

\n