Django:2个查询集和副本

Django:2个查询集和副本,django,Django,我有两个QuerySet,都包含同一个模型类的实例 class DBV: name = CharField description = TextField review_state = CharField(choices=[u"Draft",u"Published",u"Archived"]) team_members = FK(User) deleted = Boolean 这是我过滤以获得两个查询集的方式: res = DBV.objects.fil

我有两个QuerySet,都包含同一个模型类的实例

class DBV:
    name = CharField
    description = TextField
    review_state = CharField(choices=[u"Draft",u"Published",u"Archived"])
    team_members = FK(User)
    deleted = Boolean
这是我过滤以获得两个查询集的方式:

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
当然,第一个问题是,当您尝试添加查询集时,您会得到:

unsupported operand type(s) for +: 'QuerySet' and 'QuerySet'
那么,合并这些查询集并删除重复项的最佳方法是什么?我认为在Django中,除了编写sql之外,实际上没有其他方法可以做到这一点。还是

谢谢!:)
Eric

如果需要两组结果,您可以将查询转换为列表并添加列表,或者您可以使用“Q”对象和/或它们组合在一起来组合查询逻辑:

您可以使用
操作符。即


Queryset1 | Queryset2
这相当于集合中的并集
Queryset1&Queryset2
将为您提供集合的交集

Ha!就是这样。谢谢你的Q对象。看来这会解决我的问题。:)非常感谢。