2008-10-21 48 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() 
相关问题