Django将db对象与空QuerySet连接起来

Django将db对象与空QuerySet连接起来,django,django-models,django-queryset,Django,Django Models,Django Queryset,我在django中创建了一个空QuerySet,如下所示 empty = classname.objects.none() 我有一个相同类的对象(称为类) 我想要一个包含“类”的新查询集 EmptyQuerySet上没有append方法,并且|和&不适用于db对象 >>> empty = Person.objects.none() 如果使用get,则返回db对象,并在尝试使用|将对象附加到空qs时出现此错误: >>> qs = empty|Person.

我在django中创建了一个空QuerySet,如下所示

empty = classname.objects.none() 
我有一个相同类的对象(称为类)

我想要一个包含“类”的新查询集

EmptyQuerySet上没有append方法,并且|和&不适用于db对象

>>> empty = Person.objects.none()
如果使用get,则返回db对象,并在尝试使用|将对象附加到空qs时出现此错误:

>>> qs = empty|Person.objects.get(pk=1)
Traceback (most recent call last):
  File "<console>", line 1, in <module>
  File "/home/dev/.virtualenvs/dev/lib/python2.7/site-packages/django/db/models/query.py", line 1018, in __or__
    return other._clone()
AttributeError: 'Person' object has no attribute '_clone'
qs=empty | Person.objects.get(pk=1) 回溯(最近一次呼叫最后一次): 文件“”,第1行,在 文件“/home/dev/.virtualenvs/dev/lib/python2.7/site packages/django/db/models/query.py”,第1018行,在__ 返回其他。_clone() AttributeError:“Person”对象没有属性“\u clone” 但是,您可以使用|运算符组合两个查询集。要将对象作为查询集获取,可以使用.filter():

qs=empty | Person.objects.filter(pk=1) >>>打印qs [] >>>qs=qs | Person.objects.filter(pk=2) >>>打印qs [, ] >>>
哇,解决了我的问题!
>>> qs = empty|Person.objects.get(pk=1)
Traceback (most recent call last):
  File "<console>", line 1, in <module>
  File "/home/dev/.virtualenvs/dev/lib/python2.7/site-packages/django/db/models/query.py", line 1018, in __or__
    return other._clone()
AttributeError: 'Person' object has no attribute '_clone'
>>> qs = empty|Person.objects.filter(pk=1)
>>> print qs
[<Person: A>]
>>> qs = qs|Person.objects.filter(pk=2)
>>> print qs
[<Person: A>, <Person: B>]
>>>