2008-10-21 7 views
2

J'ai deux modèles. Nous les appelons objet A et l'objet B. Leur conception ressemble à ceci:Comment puis-je écrire une méthode dans un modèle Django pour récupérer des objets liés?

class Foo(models.Model): 
    name = models.CharField() 

class Bar(models.Model): 
    title = models.CharField() 
    Foo= models.ForeignKey('myapp.Foo') 

Maintenant, supposons que je veux faire une méthode dans Foo qui renvoie tous les objets Bar qui font référence à cette instance de Foo. Comment puis-je faire cela?

class Foo(models.Model): 
    name = models.CharField() 
    def returnBars(self): 
     ???? 

Répondre

10

Vous obtenez ce gratuitement:

http://docs.djangoproject.com/en/dev/topics/db/queries/#backwards-related-objects

Par défaut, vous pouvez accéder à un directeur qui vous donne accès à des éléments connexes par un attribut RELATEDCLASSNAME_set:

some_foo.bar_set.all() 

Ou vous pouvez utiliser l'argument related_name à ForeignKey pour spécifier l'attribut qui doit contenir le lien inverse Directeur de la communication:

class Foo(models.Model): 
    name = models.CharField() 

class Bar(models.Model): 
    title = models.CharField() 
    foo = models.ForeignKey(Foo, related_name='bars') 

... 

some_foo.bars.all() 
Questions connexes