Я создал маленький метод поиска.Проблема в том, что его трудно прочитать и упорядочить, кажется, «не в форме».Каков наилучший способ фильтрации запросов таким образом?
@login_check
def search(request):
subdomain = request.get_host()
q = request.GET.get('q', None)
queryset = (
SomeObject.objects.filter(title__icontains=q)
.filter(alias=Site.objects.get(domain=subdomain)) \
.order_by('created') |
SomeObject.objects.filter(description__icontains=q)
.filter(alias=Site.objects.get(domain=subdomain)) \
.order_by('created') |
SomeObject.objects.filter(comment__icontains=q)
.filter(alias=Site.objects.get(domain=subdomain)) \
.order_by('created') |
SomeObject.objects.filter(email__icontains=q)
.filter(alias=Site.objects.get(domain=subdomain)) \
.order_by('created')
)
return object_list(queryset)
В этом методе список объектов формирует то, что должно быть возвращено, поэтому все, что мне нужно сделать, это сформировать красивый запрос.
Основная проблема, которую я вижу здесь, заключается в том, что фильтры могут быть применены после contains
, поскольку все они одинаковы.Как я могу достичь этого?Каков наилучший / лучший способ фильтрации в такой ситуации?
Я устал устанавливать фильтры после создания запроса, но потом выясняется, что я не могу применить фильтры к запросам только к спискам моделей.Я могу ошибаться, так как я пишу эту ошибку из памяти, но одна вещь наверняка, что она выдавала ошибку.
PS Я использую Django 1.1 здесь и python 2.5.