que tienen un modelo básico de Django como:Django Tastypie Filtrado avanzado: Cómo hacer búsquedas complejas con Q objetos
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)
necesito para ejecutar una consulta compleja en el modelo anterior como:
qset = (
Q(name__icontains=query) |
Q(description__icontains=query) |
Q(email__icontains=query)
)
results = Business.objects.filter(qset).distinct()
he intentado lo siguiente usando tastypie sin suerte:
y en el Meta clase para tastypie he filtrado establecer como:
filtering = {
'name: ALL,
'description': ALL,
'email': ALL,
'query': ['icontains',],
}
¿Alguna idea de cómo puedo hacer frente a esto?
Gracias - Newton
Esto funciona bien. Gracias – nknganda
Diccionario no tiene ningún método 'extender'. Debería ser: orm_filters.update ({'custom': qset}) –
Esta solución provoca que se llame al DB dos veces (para semi_filtered y luego para el filtro personalizado). Un código ligeramente diferente me funciona: si 'custom' en applicable_filters: custom = applicable_filters.pop ('custom') return Outreaches.objects.filter (custom) else: return super (OutreachResource, self) .apply_filters (request, applicable_filters) –