Django select objects with empty ManyToManyField
Asked Answered
S

2

5

Considering the following models, knowing a family, how do I select Kids with no buyers?

class Family...

class Kid(models.Model):
    name = models.CharField(max_length=255)
    family = models.ForeignKey(Family)
    buyer = models.ManyToManyField(Buyer, blank=True, null=True)

family = get_object_or_404(Family, pk=1)
for_sale = family.kid_set.filter(buyer... this screws my child trade business
Synergism answered 4/10, 2010 at 14:49 Comment(0)
S
9

family.kid_set.filter(buyer__isnull=True) should work.

Singband answered 4/10, 2010 at 15:4 Comment(0)
F
4

@piquadrat's answer is correct. You can also do:

for_sale = Kid.objects.filter(family__pk = 1, buyer = None)

This lets you avoid a separate query to look up the Family instance.

Fukuoka answered 4/10, 2010 at 15:14 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.