2011-01-24 9 views
5

mam 2 modele:Django - uzyskać wszystkie obiekty w jednej tabeli, które nie mają ForeignKey w innej tabeli

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) 

chcę lista Person obiektów, które nie mają żadnych wpisów w obiekcie Friend. na przykład

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

, ale nie jestem pewien, jaki powinien być filtr.

+4

Wskazówka do wskazania nazwy: klasa "Przyjaciel" powinna nazywać się "Przyjaźń", ponieważ modeluje * relację * między dwoma przyjaciółmi. –

+0

możesz na to spojrzeć: http://docs.djangoproject.com/en/dev/topics/db/models/#extra-fields-on-many-to-many-relationships – crodjer

Odpowiedz

10

Spróbuj użyć powiązanego menedżera.

no_friends = Person.objects.filter(friend1=None,friend2=None) 
Powiązane problemy