У меня есть основной Django модели, как:Джанго Tastypie Advanced Фильтрация: Как сделать сложные Lookups с Q объекты
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)
Мне нужно выполнить сложный запрос на вышеуказанной модели, как:
qset = (
Q(name__icontains=query) |
Q(description__icontains=query) |
Q(email__icontains=query)
)
results = Business.objects.filter(qset).distinct()
Я попытался следующие с помощью tastypie не повезло:
и в классе Meta для tastypie я фильтрации установить в качестве:
filtering = {
'name: ALL,
'description': ALL,
'email': ALL,
'query': ['icontains',],
}
Любые идеи, как я могу решить это?
Благодаря - Ньютон
Это прекрасно работает. Спасибо – nknganda
Словарь не имеет метода 'extend'. Должно быть: orm_filters.update ({'custom': qset}) –
Это решение вызывает вызов БД дважды (для semi_filtered, а затем для настраиваемого фильтра). Для меня работает несколько другой код: if 'custom' в apply_filters: custom = apply_filters.pop ('custom') return Outreaches.objects.filter (custom) else: return super (OutreachResource, self) .apply_filters (request, apply_filters) –