2008-10-21 50 views
2

我有兩個模型。我們會打電話給他們反對A和B.反對它們的設計看起來是這樣的:如何在Django模型中編寫一個方法來檢索相關對象?

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

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

現在,假如我想打一個返回引用美孚該實例的所有酒吧對象中富的方法。我該怎麼做呢?

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

回答

10

你得到這個免費:

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

默認情況下,您可以訪問管理器,讓你通過RELATEDCLASSNAME_set屬性訪問相關的項目:

some_foo.bar_set.all() 

或者您可以使用related_name參數ForeignKey來指定應該保留反向關係的屬性離子管理器:

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() 
相關問題