链查询集,同时保留链接顺序和查询集行为

时间:2013-11-07 10:08:13

标签: python django django-admin itertools django-1.5

我正在尝试链接查询集,同时保留其链接顺序。

类似的东西:

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,但它的行为不像查询集。

这样做的目的是自定义admin change_list查询集,以便在三个类别中对其进行排序。

1 个答案:

答案 0 :(得分:-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)