Получение элементов из набора queryset на основе левого объединения в django
У меня есть две модели:
class A(models.Model):
field1 = models.CharField(max_length=100)
field2 = models.CharField(max_length=100)
class B(models.Model):
a_field = models.ForeignKey(null=True,blank=True,related_name='a',on_delete=models.SET_NULL)
field2 = models.CharField(max_length=100)
Я хочу получить все элементы модели A, которые не связаны с B.
Вот запрос, который я написал, но он не работает:
B.objects.select_related("a_field").filter(a_field__isnull=True)
Как я могу решить эту проблему?
Я хочу получить все элементы модели
A
, которые не относятся кB
.
Вы можете сделать запрос с помощью:
A.objects.filter(a=None)
a
происходит от related_name=…
значения [Django-doc] для ForeignKey
, но нет смысла называть это 'a'
, поскольку это отношение в обратное , так что от A
к B
, обычно имеет смысл назвать это 'bs
', так:
class B(models.Model):
a_field = models.ForeignKey(
A,
null=True,
blank=True,
related_name='bs',
on_delete=models.SET_NULL
)
# …
и, таким образом, запрос с:
A.objects.filter(bs=None)