2016-12-12 49 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")