Как получить все значения в моделях Django? - PullRequest
0 голосов
/ 01 декабря 2011

Предположим, я получил несколько запросов, скажем, длиной 100 query_objs=[q1,q2,...,q100] на основании некоторых критериев.Как я могу отфильтровать этот набор запросов, скажем, is_admin = True.Я знаю, что этот набор запросов имеет is_admin = True 10 раз.

Ответы [ 2 ]

1 голос
/ 01 декабря 2011

Цель состоит в том, чтобы спроектировать ваше приложение так, чтобы набор запросов не оценивался до тех пор, пока ваша функция не применяет последний фильтр.

например,

qs = Entry.objects.filter(...whatever...)
qs = qs.exclude(...whatever...)
qs = qs.filter(...something_else...)
# qs is not evaluated yet

def my_func(some_qs):
    return some_qs.filter(is_admin=True)

qs = my_func(qs)
# qs is still not evaluated yet

, если у вас нет выборачем фильтровать уже оцененный набор запросов, то имейте в виду, что вы можете просто обрабатывать его как любую другую итерацию, например, использовать встроенную функцию фильтрации, как в списке:

admins = filter(lambda x: x.is_admin, my_evaluated_qs)
1 голос
/ 01 декабря 2011

вы можете отфильтровать ваш набор запросов перед вызовом values

Entry.objects.filter(is_admin=True).values_list('id', flat=True).order_by('id')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...