Ich habe viele Ressourcen und möchte das DjangoFilterBackend auf alle anwenden.
Erprobte Einstellung in settings.py
Aber es hat nicht funktioniert
Ich habe versucht, nur filter_backends = (filters.DjangoFilterBackend,)
zu einer meiner Ressourcen hinzuzufügen, und es hat immer noch nicht funktioniert.
Erst nachdem ich filter_fields = ('col1','col2',)
explizit hinzugefügt habe, begann es nur mit diesen Feldern zu arbeiten.
Gibt es eine Möglichkeit, das Filter-Backend auf alle Ressourcen und alle Felder anzuwenden (so wie ich es beispielsweise mit Berechtigungen mache ...)?
Danke.
Im Moment sagen Sie Django REST Framework, dass Sie DjangoFilterBackend
für alle Ansichten verwenden sollen, aber Sie sagen nicht, wie die FilterSet
generiert werden soll.
django-filter
wird automatisch ein FilterSet
für alle Felder auf einem Modell erzeugen, wenn die fields
werden auf None
gesetzt. Django REST-Framework wird automatisch ein FilterSet
generiert, wenn filter_fields
nicht Setzen Sie den Wert auf None
, was bedeutet, dass Sie nicht den Standard DjangoFilterBackend
verwenden können.
Sie können jedoch eine benutzerdefinierte DjangoFilterBackend
erstellen, die automatisch die FilterSet
für alle Felder im Modell generiert.
Dies wird immer noch das ursprüngliche Filter-Backend für Situationen verwenden, in denen die Ansicht ein benutzerdefiniertes filter_class
oder filter_fields
definiert, aber es generiert ein benutzerdefiniertes FilterSet
für alle anderen Situationen. Beachten Sie, dass Felder, die nicht über die API zurückgegeben werden, nicht gefiltert werden dürfen, da Sie sich für zukünftige Sicherheitsprobleme öffnen (z. B. wenn Benutzer eine Benutzerliste nach Passwörtern filtern).
Tags und Links django django-rest-framework