Django объединяет объект БД с пустым QuerySet - PullRequest
3 голосов
/ 04 марта 2011

Я создал пустой QuerySet в django следующим образом.

empty = classname.objects.none() 

и у меня есть объект того же класса (называемый классом).

class

Я хочу новый набор QuerySet, в котором есть «класс».

Тамнет метода добавления в EmptyQuerySet и |и & не работают для объекта db.

1 Ответ

7 голосов
/ 05 марта 2011
>>> 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>]
>>> 
...