Как я могу написать метод в модели Django для извлечения связанных объектов? - PullRequest
2 голосов
/ 21 октября 2008

У меня две модели. Мы назовем их объектом A и объектом B. Их дизайн выглядит примерно так:

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

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

Теперь предположим, что я хочу создать метод внутри Foo, который возвращает все объекты Bar, которые ссылаются на этот экземпляр Foo. Как мне это сделать?

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

1 Ответ

10 голосов
/ 21 октября 2008

Вы получаете это бесплатно:

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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...