Я использую queryset.union
для объединения двух наборов запросов одинаковой природы, но использование .get()
или .filter()
для результата не работает должным образом:
>>>foo = obj1.father.all()
>>>foo
<QuerySet [<Link: l1>, <Link: l2>]>
>>>foo.get(pk=0)
<Link: l1>
>>>bar = foo.union(obj2.father.all())
>>>bar
<QuerySet [<Link: l1>, <Link: l2>], <Link: l3>], <Link: l4>]>
>>>bar.filter(pk=0)
<QuerySet [<Link: l1>, <Link: l2>], <Link: l3>], <Link: l4>]>
>>>[l.pk for l in bar]
[0, 1, 2, 3]
Должен ли я использовать что-то еще, кроме.union () для объединения наборов запросов?Как мне это сделать?
мой models.py:
class Article(models.Model):
name = models.CharField(max_length=255,
unique=True,
verbose_name = _("Name"),
help_text=_("Name of the article"))
class Link(models.Model):
father = models.ForeignKey(Article, related_name="father", on_delete=models.CASCADE)
child = models.ForeignKey(Article, related_name="child", on_delete=models.CASCADE)