我有两个模型,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查询)。
答案 0 :(得分:0)
如果您的模型定义正确,这将有效,但您没有显示这些定义,并且我觉得首先需要修复这些定义:
User.objects.filter(ref=1).prefetch_related("departments")