Django将db对象与空QuerySet连接起来
我在django中创建了一个空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.
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>]
>>>