Django 过滤和删除
我有一个 modelViewSet
class LikeViewSet(viewsets.ModelViewSet):
queryset = Likes.objects.all()
serializer_class = LikeSerializer
filter_fields = ('user','post')
def delete(self, request, pk, format=None):
post = Likes.objects.get(pk=pk)
post.delete()
return Response(status=status.HTTP_204_NO_CONTENT)
我想通过这样的 URL 进行过滤:
http://localhost:8000/likes/?user=anon&post=1
然后删除我从 Django 得到的那个特定结果,但 Django 总是给我
delete() takes at least 3 arguments (2 given)
我真的搞不清楚为什么。有人能帮忙吗?谢谢!我在使用 Django Rest Framework
编辑:这是 LikeViewSet 的模型:
class Likes(models.Model):
user = models.ForeignKey(Profile, related_name='liker')
post = models.ForeignKey(Post, related_name=' post' )
created = models.DateTimeField(auto_now_add=True)
class Meta:
ordering = ('created',)
这个模型的想法是,它是用户模型和帖子模型之间关系的模型表,所以过滤必须以这种方式在 URL 中进行
1 个回答
0
当你使用一个 ViewSet
时,应该用 destroy()
方法,而不是 delete()
。
你可以在这里查看文档 这里:
ViewSet 类其实就是一种基于类的视图,但它不提供像 .get() 或 .post() 这样的处理方法,而是提供一些动作,比如 .list() 和 .create()。
根据你的代码,看起来你在 destroy/delete
方法里没有做什么特别的事情。你是否可以直接使用默认的 destroy
函数呢?