2013-11-07 1 views
1

Я пытаюсь связать запросы, сохраняя их порядок цепочки.цепочка запросов при сохранении порядка цепочки и поведения запроса

что-то вроде:

def queryset(self, request): 
    qs = super(EstateAdmin, self).queryset(request).exclude(display_status_id__name='offline') 
    new_estates = qs.exclude(Q(purposes__purpose_id=BaseSearchBoxForm.TO_RENT_ID)).filter(Q(
     create_date_time__gte=datetime.datetime.now() - datetime.timedelta(
      days=settings.IS_NEW_ESTATE_DELTA))) 

    new_prices = qs.filter(Q(price_change_date_time__gte=datetime.datetime.now() - datetime.timedelta(
     days=settings.IS_NEW_PRICE_DELTA))) 
    the_rest = qs 
    return new_estates + new_prices + the_rest 

Я пытался использовать itertools.chain, но это не ведет себя как QuerySet.

Целью этого является настройка набора запросов администратора change_list для его заказа по трем категориям.

+1

Вы пытались сделать 'order_by ('оценка')' вместо? Это даст вам заказ, если вы не являетесь обычным. В последнем случае попробуйте сделать это вручную. –

+0

Правда, мой пример был плохим, обновил вопрос – maazza

ответ

-1

Пробег: Q objects. Тогда вы можете сделать что-то вроде этого:

from django.db.models import Q 

good_products = Q(evaluation__lte=2) 
average_products = Q(evaluation__lte=5) & good_products 
the_rest = Q(evaluation__gte=5) 

queryset = Product.objects.filter(good_products & average_products & the_rest) 
+0

Я хочу сохранить порядок подбора – maazza