Django - get all objects in one table that do not have a foreign key in another table

I have 2 models:

class Friend(models.Model):
    person1 = models.ForeignKey("Person", related_name="friend1")
    person2 = models.ForeignKey("Person", related_name="friend2")
    created = models.DateTimeField(auto_now=True, auto_now_add=True, editable=False)

class Person(models.Model):
    firstname = models.CharField(max_length=100)
    surname = models.CharField(max_length=100)
    created = models.DateTimeField(auto_now=True, auto_now_add=True, editable=False)

I need a list of objects Personthat do not have entries in the object Friend. eg.

no_friends = Person.objects.filter(????)

but I'm not sure what filter should be.

+5
source share
1 answer

Try using a linked manager.

no_friends = Person.objects.filter(friend1=None,friend2=None)
+10
source

All Articles