Django过滤和删除

时间:2014-05-20 02:36:00

标签: python django django-models django-rest-framework django-filter

我有这个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)

我正在尝试使用以下网址进行过滤:

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 :(得分:1)

当您使用ViewSet时,应使用destroy()方法而不是delete()

请参阅文档here

  

ViewSet类只是一种基于类的View,但却没有   提供任何方法处理程序,例如.get()或.post(),而不是   提供诸如.list()和.create()之类的动作。

根据您的代码,您似乎并未在destroy/delete方法中执行任何独特的操作。你只使用默认的destroy功能吗?