如何在Django(1.2)ManyToMany关系中获得所有模型的查询集?

时间:2013-04-03 17:57:38

标签: python model-view-controller django-orm django-1.2

我有一个Project模型,它有一个pre-requisite属性,是一个链接到其他项目的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 个答案:

答案 0 :(得分:0)

project_a.prequisites.all()

将返回通过manytomanyfield连接的所有Project个实例

管理员允许您像模型的objects属性一样过滤和获取queryset对象

这将允许你做类似

的事情

project_a.prequisites.filter(title='a_prereq_title')