Möglicher 'in' 'lookup_type' über den django-filter URL Parser?

9

Ich benutze django-filter mit django-rest-framework und ich versuche, einen Filter zu instanziieren, der Listen von Zahlen zum Filtern der abgelegten Abfrage akzeptiert

%Vor%

Wenn ich eine durch Komma getrennte Liste von ganzen Zahlen übergebe, wird der Filter komplett ignoriert.

Wenn ich eine ganze Zahl übergebe, kommt es durch den Django-Filter in den Formvalidator von django und beschwert sich:

%Vor%

Gibt es eine Möglichkeit, ein Django-Filter-Objekt zu erstellen, das mit einer Liste von Ganzzahlen umgehen und das Abfrage-Set korrekt ausfiltern kann?

    
Ross Rogers 04.06.2014, 15:31
quelle

5 Antworten

21

Zum Besseren oder Schlechteren habe ich dafür einen eigenen Filter erstellt:

%Vor%

Was benutzt wird wie:

%Vor%

Jetzt akzeptiert meine Schnittstelle kommagetrennte Listen von Ganzzahlen.

    
Ross Rogers 04.06.2014, 15:58
quelle
6

Hier ist eine vollständige Lösung:

%Vor%     
yndolok 03.03.2015 22:02
quelle
4

Laut einem Beitrag in den Django-Filter-Problemen :

%Vor%

Ich habe das persönlich ohne Probleme in meinen Projekten verwendet und es funktioniert, ohne dass ich einen Filter pro Typ erstellen muss.

    
Michael B 20.02.2015 23:23
quelle
4

Ich weiß, das ist ein alter Post, aber es gibt jetzt eine bessere Lösung. Die Änderung, die es richtig macht, ist hier .

Sie haben eine BaseInFilter und eine BaseRangeFilter hinzugefügt. Die Dokumentation ist hier .

Großes Bild, BaseFilter prüft auf CSV, und wenn es mit einem anderen Filter gemischt wird, tut es, was Sie fragen. Ihr Code kann jetzt wie folgt geschrieben werden:

%Vor%     
Diesel 18.11.2017 21:33
quelle
1

Basierend auf @yndolok Antwort bin ich zu einer allgemeinen Lösung gekommen. Ich denke, das Filtern nach einer Liste von IDs ist eine sehr häufige Aufgabe und sollte daher im FilterBackend enthalten sein:

%Vor%     
jsmedmar 04.03.2016 21:29
quelle