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

时间:2011-03-04 14:45:37

标签: django django-models django-queryset

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

empty = classname.objects.none() 

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

class

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

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

1 个答案:

答案 0 :(得分:7)

>>> 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'

然而你可以使用|运算符组合两个查询集。要将对象作为查询集,我们可以使用.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>]
>>>