0

我有一个 Project 模型,它有一个先决条件属性,它是一个链接到其他项目的 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)

但我宁愿以正确的方式做事,如果你明白我的意思的话。

4

1 回答 1

0

project_a.prequisites.all()

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

管理器允许您像通过objects模型的属性一样过滤和获取查询集对象

这将允许你做类似的事情

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

于 2013-04-03T18:01:45.677 回答