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

pra*_*jal 3 django django-models django-queryset

我在django中创建了一个空的QuerySet,就像这样.

empty = classname.objects.none() 
Run Code Online (Sandbox Code Playgroud)

我有一个相同类的对象(称为类).

class
Run Code Online (Sandbox Code Playgroud)

我想要一个新的QuerySet,其中包含'class'.

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

DTi*_*ing 7

>>> empty = Person.objects.none()
Run Code Online (Sandbox Code Playgroud)

如果您使用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'
Run Code Online (Sandbox Code Playgroud)

但是你可以使用| 运算符组合两个查询集.要将对象作为查询集,我们可以使用.filter():

>>> qs = empty|Person.objects.filter(pk=1)
>>> print qs
[<Person: A>]
>>> qs = qs|Person.objects.filter(pk=2)
>>> print qs
[<Person: A>, <Person: B>]
>>> 
Run Code Online (Sandbox Code Playgroud)