如何在Django模型中编写方法来检索相关对象?

And*_*ird 2 python django model-view-controller frameworks

我有两个型号.我们将它们称为对象A和对象B.它们的设计看起来像这样:

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

class Bar(models.Model):
     title = models.CharField()
     Foo= models.ForeignKey('myapp.Foo')
Run Code Online (Sandbox Code Playgroud)

现在,假设我想在Foo中创建一个方法,它返回引用该Foo实例的所有Bar对象.我该怎么做呢?

class Foo(models.Model):
     name = models.CharField()
     def returnBars(self):
         ????
Run Code Online (Sandbox Code Playgroud)

Jon*_*nan 10

你这是免费的:

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

默认情况下,您可以访问管理器,该管理器允许您通过RELATEDCLASSNAME_set属性访问相关项:

some_foo.bar_set.all()
Run Code Online (Sandbox Code Playgroud)

或者您可以使用related_name参数来ForeignKey指定应该保存反向关系Manager的属性:

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()
Run Code Online (Sandbox Code Playgroud)