Django Tastypie Advanced Filtering: So führen Sie komplexe Suchvorgänge mit Q-Objekten durch
Ich habe ein einfaches Django-Modell wie:
<code>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) </code>
Ich muss eine komplexe Abfrage für das obige Modell ausführen, z.
<code>qset = ( Q(name__icontains=query) | Q(description__icontains=query) | Q(email__icontains=query) ) results = Business.objects.filter(qset).distinct() </code>
Ich habe folgendes mit probierttastypie ohne glück:
<code>def build_filters(self, filters=None): if filters is None: filters = {} orm_filters = super(BusinessResource, self).build_filters(filters) if('query' in filters): query = filters['query'] print query qset = ( Q(name__icontains=query) | Q(description__icontains=query) | Q(email__icontains=query) ) results = Business.objects.filter(qset).distinct() orm_filters = {'query__icontains': results} return orm_filters </code>
und in der Klasse Meta for tastypie habe ich Filter gesetzt als:
<code>filtering = { 'name: ALL, 'description': ALL, 'email': ALL, 'query': ['icontains',], } </code>
Irgendwelche Ideen, wie ich das angehen kann?
Vielen Dank - Newton