Как получить набор запросов для всех моделей в Django (1.2) ManyToMany?
У меня есть модель проекта, которая имеет обязательный атрибут, который представляет собой поле ManyToMany, связывающее другие проекты. То есть каждый проект может иметь более 0 проектов, которые должны быть завершены, прежде чем он может быть завершен.
class Project(models.Model):
title = models.CharField(max_length=200)
prequisites = models.ManyToManyField('self', null=True, blank=True)
Как вернуть все проекты, которые являются обязательными для этого проекта? Я хочу сделать что-то вроде этого:
project_a = Project.objects.get(title="My Cool Project")
for pre_requisite in project_a.prequisites:
# do something with pre_requisite
но project_a.prequisites
возвращает ManyRelatedManager
объект. Кажется, что специальный атрибут _set тоже не работает:
project_a.prequisites_set
AttributeError: 'Project' object has no attribute 'prequisites_set'
Я думаю о моделировании предпосылок в другой модели:
class ProjectPrequisite(models.Model):
project = models.ForeignKey(Project)
prequisite = models.ForeignKey(Project)
но я бы предпочел сделать все правильно, если вы понимаете, о чем я.
1 ответ
project_a.prequisites.all()
Вернем все Project
экземпляры, связанные через ваше множество
менеджер позволяет фильтровать и получать объекты наборов запросов, как если бы objects
собственность ваших моделей
это позволит вам сделать что-то вроде
project_a.prequisites.filter(title='a_prereq_title')