Ich habe eine grundlegende Django Modell wie:Django Tastypie Erweiterte Filter: Wie komplex Lookups mit Q tun Objekte
class Business(models.Model):
name = models.CharField(max_length=200, unique=True)
email = models.EmailField()
phone = models.CharField(max_length=40, blank=True, null=True)
description = models.TextField(max_length=500)
ich wie eine komplexe Abfrage auf dem obigen Modell ausführen müssen:
qset = (
Q(name__icontains=query) |
Q(description__icontains=query) |
Q(email__icontains=query)
)
results = Business.objects.filter(qset).distinct()
ich habe das versucht folgende Verwendung tastypie ohne Glück:
und in der Klasse Meta für tastypie Ich habe Filtern nach:
filtering = {
'name: ALL,
'description': ALL,
'email': ALL,
'query': ['icontains',],
}
Irgendwelche Ideen, wie ich das angehen kann?
Dank - Newton
Das funktioniert gut. Danke – nknganda
Wörterbuch hat keine Methode "erweitern". Sollte sein: orm_filters.update ({'custom': qset}) –
Diese Lösung verursacht den Aufruf der DB zweimal (für semi_filtered und dann für benutzerdefinierte Filter). Ein etwas anderer Code funktioniert für mich: Wenn 'Benutzerdefiniert' in anwendbare_Filter: Benutzerdefiniert = anwendbare_Filter.pop ('Benutzerdefiniert') gibt Outreaches.Objects.Filter (Benutzerdefiniert) zurück sonst: return Super (OutreachResource, Selbst) .Apply_Filter (Anforderung, anwendbare_Filter) –