Я использую Django 2.0 и сталкиваюсь со странными проблемами с набором запросов needs
, сгенерированным из union () двух наборов запросов:
needs.get(pk="3fbdcc49-2f06-46ea-a0a3-587ac5aaf50f")
---------------------------------------------------------------------------
MultipleObjectsReturned Traceback (most recent call last)
<ipython-input-29-300ad17a22c2> in <module>()
----> 1 needs.get(pk="3fbdcc49-2f06-46ea-a0a3-587ac5aaf50f")
/usr/local/lib/python3.6/site-packages/django/db/models/query.py in get(self, *args, **kwargs)
405 raise self.model.MultipleObjectsReturned(
406 "get() returned more than one %s -- it returned %s!" %
--> 407 (self.model._meta.object_name, num)
408 )
409
и с тем же набором запросов:
for n in needs:
print(n.pk)
3fbdcc49-2f06-46ea-a0a3-587ac5aaf50f
7c134214-6309-4881-b381-016cc00a31a5
Итак: needs
- это набор запросов с двумя объектами, один из которых с его первичным ключом (UUID), установленным как 3fbdcc49-2f06-46ea-a0a3-587ac5aaf50f
. Но функция get()
вызывает MultipleObjectsReturned.
Есть идеи, что вызывает такое поведение? Правильно ли искать UUID с его строковым представлением?
Не беспокоя вас о моих моделях, вот как я генерирую набор запросов needs
:
own_needs = models.Need.objects.filter(owner="bfd8e679-7660-4dcd-83bd-614fbd99b506")
mandate=models.ListMandate.objects.get(mandated=user1, permission=models.ListMandate.CAN_BUY_NEEDS, revoked_on=None)
shared_needs=models.Need.objects.filter(list=mandate.target)
needs = own_needs.union(shared_needs)
Спасибо за ваше просветление!