2016-10-04 7 views
0

Ist es möglich, Konto MyModelViewSet ‚s zu tragen filter_backends wenn benutzerdefinierte queryset zu schaffen?außer Kraft setzen ModelViewSet der Anwendung

Wie soll ich das umsetzen?

Django: 1.10

Django Rastrahmen: 3.4.6

+0

@ e4c5 So nach, dass Sie meine, ich habe all die Filterung in meinem 'CustomFilter' habe ich schon zu kopieren, wenn ich es in' get_queryset() 'verwenden? – primoz

+0

Sorry war nicht aufmerksam. Du nimmst etwas über das Reiten der 'filter_backends' hinaus? – e4c5

Antwort

2

Ja, Sie können. Nur verlängert filter_queryset Methode des Viewset

class MyModelViewSet(viewsets.ModelViewSet): 
    filter_backends = (CustomFilter,) 
    serializer_class = MySerializer 

    def filter_queryset(self, queryset): 
     # super needs to be called to filter backends to be applied 
     queryset = super().filter_queryset(queryset) 
     # some extra filtering 
     return queryset 

In Aktion Methoden in Viewset es tatsächlich tut dies

queryset = self.filter_queryset(self.get_queryset()) 

So Ihre queryset, den Serializer gesendet wird, ist derjenige, der mit filter_queryset

von get_queryset und dann filtriert erstellt
Verwandte Themen