我有一个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)
但如果你知道我的意思,我宁愿以正确的方式做事。
答案 0 :(得分:0)
project_a.prequisites.all()
将返回通过manytomanyfield连接的所有Project
个实例
管理员允许您像模型的objects
属性一样过滤和获取queryset对象
这将允许你做类似
的事情 project_a.prequisites.filter(title='a_prereq_title')