2016-12-12 51 views
1

我有两个模型,Person和Classes,这两个模型都没有对应的数据库表(meta managed=False),但是由自定义查询填充。Django一对多模型ORM访问

是否可以使用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我获取记录? (请注意,这些对象是使用raw sql创建的)。

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

+0

一个对象的数据是使用自定义查询聚集。 – Dasith

+1

请提供代码示例。 –

+0

@knbk这是一个原始查询 – Dasith

回答

0

这将工作假设你有你的模型定义是正确的,但你并没有表现出那些和我有一种感觉,那可能需要先固定:

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