Django Tastypie Advanced Filtering: cómo realizar búsquedas complejas con objetos Q
Tengo un modelo básico de Django como:
<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>
Necesito ejecutar una consulta compleja en el modelo anterior como:
<code>qset = ( Q(name__icontains=query) | Q(description__icontains=query) | Q(email__icontains=query) ) results = Business.objects.filter(qset).distinct() </code>
He intentado lo siguiente usandotastypie sin suerte
<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>
y en la clase Meta para tastypie tengo conjunto de filtros como:
<code>filtering = { 'name: ALL, 'description': ALL, 'email': ALL, 'query': ['icontains',], } </code>
¿Alguna idea de cómo puedo abordar esto?
Gracias - newton