我有这个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中完成
答案 0 :(得分:1)
当您使用ViewSet
时,应使用destroy()
方法而不是delete()
。
请参阅文档here:
ViewSet类只是一种基于类的View,但却没有 提供任何方法处理程序,例如.get()或.post(),而不是 提供诸如.list()和.create()之类的动作。
根据您的代码,您似乎并未在destroy/delete
方法中执行任何独特的操作。你只使用默认的destroy
功能吗?