0

我有這個modelViewSetDjango的過濾和刪除

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框架

編輯:這是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

當您使用ViewSet時,應該使用destroy()方法而不是delete()

見文檔here

甲視圖集類是一個簡單的類型的基於類的視圖,即不提供 任何方法的處理程序,如獲得()或.POST(),並代替 提供諸如.list()和.create()之類的操作。

根據你的代碼,它看起來並不像你在destroy/delete方法中做的任何獨特的事情。你剛剛使用默認的destroy函數嗎?

+0

是否使用相同的刪除http請求? –

+0

@JohnD是的。有一張關於HTTP動詞如何與視圖集合方法相匹配的圖表[here](http://www.django-rest-framework.org/api-guide/routers#simplerouter)。 – Alex

+0

我如何使用過濾功能呢?對不起,我是新手:/ –