Django Tastypie Advanced Filtering: как выполнять сложные поиски с объектами Q
У меня есть базовая модель Django, например:
<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>
Мне нужно выполнить сложный запрос на приведенной выше модели, как:
<code>qset = ( Q(name__icontains=query) | Q(description__icontains=query) | Q(email__icontains=query) ) results = Business.objects.filter(qset).distinct() </code>
Я пробовал следующее с помощьюtastypie без удачи
<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>
а в классе Мета для вкусного пирога у меня фильтрация установлена как:
<code>filtering = { 'name: ALL, 'description': ALL, 'email': ALL, 'query': ['icontains',], } </code>
Любые идеи о том, как я могу решить это?
Спасибо - ньютон