Django一对多模型ORM访问

时间:2016-12-12 18:16:32

标签: django

我有两个模型,Person和Classes,这两个模型都没有与之对应的任何数据库表(meta managed=False),但由自定义查询填充

是否可以使用ORM获取相关字段。示例:我可以执行person.classes并获取相关记录吗?

两个模型之间的关系是一对多的。

这是一个例子: 两个模型用户和部门

Users
ref | name
1   | John
2   | Matt

Department
ref | name | chair
1   | IT   | 1
2   | Math | 1


u = User.objects.raw("SELECT ref, name FROM users where ref = 1")

现在,如果我想获得u担任主席的所有部门,我可以这样做吗?当我u.deparments时,我会得到记录吗? (请注意,对象是使用原始sql创建的。)

我能想到的一种方法是编写实例方法,但如果有多个用户,我会遇到性能问题(N + 1查询)。

1 个答案:

答案 0 :(得分:0)

如果您的模型定义正确,这将有效,但您没有显示这些定义,并且我觉得首先需要修复这些定义:

User.objects.filter(ref=1).prefetch_related("departments")