Я использую промежуточную модель с дополнительными полями для отношений «многие ко многим», как это:
class A(models.Model):
name = models.CharField(max_length=128)
class B(models.Model):
name = models.CharField(max_length=128)
a = models.ManyToManyField(A, through='AB')
class AB(models.Model):
a = models.ForeignKey(A, on_delete=models.CASCADE)
b = models.ForeignKey(B, on_delete=models.CASCADE)
number = models.IntegerField(default=0)
date = models.DateTimeField()
По умолчанию AB.date
равно NULL в базе данных.
Я получаювсе мои B
экземпляры с чем-то вроде этого B.objects.all()
.
Тогда для каждого экземпляра B
я могу получить набор AB
, подобный этому, b_instance.ab_set.all()
.
Как загрузить только ab_set
элементов, где date
равно нулю?
В SQL это выглядело бы так:
SELECT * FROM B
INNER JOIN AB ON AB.id = B.ab_id AND AB.date IS NULL