Джанго: 2 набора запросов и дубликаты - PullRequest
2 голосов
/ 04 декабря 2010

У меня есть два QuerySet, каждый из которых содержит экземпляры одного и того же класса модели.

class DBV:
    name = CharField
    description = TextField
    review_state = CharField(choices=[u"Draft",u"Published",u"Archived"])
    team_members = FK(User)
    deleted = Boolean

Вот как я фильтрую для получения двух QuerySets:

res = DBV.objects.filter(deleted=False).filter(team_members=user)
if user.has_perm('dbv.can_view_dbv'):
    r = DBV.objects.filter(deleted=False).filter(review_state__in=[u'Published',u'Archived',])
    res = res + r

Первая проблема, конечно, заключается в том, что при попытке добавить QuerySets вы получаете:*

unsupported operand type(s) for +: 'QuerySet' and 'QuerySet'

Итак, как лучше всего объединить эти QuerySets и удалить дубликаты?Я полагаю, что в Django нет другого способа сделать это, кроме написания sql.Или?

Спасибо!:) Эрик

Ответы [ 2 ]

2 голосов
/ 04 декабря 2010

Вы можете преобразовывать запросы в списки и добавлять списки, если вам нужны оба набора результатов, или вы можете использовать объекты "Q" и / или их вместе для объединения логики запроса: http://docs.djangoproject.com/en/1.2/topics/db/queries/#complex-lookups-with-q-objects

0 голосов
/ 14 февраля 2013

Вы можете использовать оператор |.т.е.

Queryset1 | Queryset2 это делает эквивалент объединения в множествах.Queryset1 & Queryset2 даст вам пересечение наборов

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...