Verwendung von benutzerdefinierten Methoden im Filter mit django-rest-framework

8

Ich möchte in meiner REST-API nach Abfrageparametern filtern - siehe django docs dazu . Ein Parameter, nach dem ich filtern möchte, ist jedoch nur über ein Modell @property

verfügbar

Beispiel models.py:

%Vor%

Hier ist das Setup für meine Listing API gemäß django-filter docs

%Vor%

Wie kann ich nach listing.category filtern? Es ist nicht direkt im Listenmodell verfügbar.

    
tomcounsell 25.06.2014, 17:24
quelle

2 Antworten

13

Verwenden Sie den Parameter 'action', um eine benutzerdefinierte Methode anzugeben - siehe django-filter docs

Definieren Sie zuerst eine Methode, die ein Abfrage-Set mit dem Wert des category-Parameters filtert:

%Vor%

Listing filter sollte so aussehen:

%Vor%     
tomcounsell 25.06.2014, 17:24
quelle
-1

Aus Gründen der Datenbankgeschwindigkeit sollten Sie nur die Kategorie zu Ihrem Angebotsmodell hinzufügen

%Vor%

Verwenden Sie anschließend ein Signal post_save , um das Feld auf dem neuesten Stand zu halten

%Vor%

Dann filtere nach seinem Namen wie jedes andere Feld:

%Vor%     
tomcounsell 25.06.2014 18:21
quelle