我需要的東西像這樣在Django的一個查詢中選擇用戶和組。如何在django的單個查詢中選擇用戶和組?
user = User.objects.select_related('groups').get(id=user_id)
我不想爲此使用原始查詢。
還有另一種方式來做到這一點,這使得兩個查詢:
user = User.objects.get(id=user_id)
groups = user.groups
我需要的東西像這樣在Django的一個查詢中選擇用戶和組。如何在django的單個查詢中選擇用戶和組?
user = User.objects.select_related('groups').get(id=user_id)
我不想爲此使用原始查詢。
還有另一種方式來做到這一點,這使得兩個查詢:
user = User.objects.get(id=user_id)
groups = user.groups
編輯:這似乎是沒有辦法做到這一點,除了原始的SQL或extra
一個查詢。
所以,如果你只想get
一個用戶,你的第二個例子應該工作。 如果許多用戶:
你應該使用prefetch-related
,但在兩個查詢。
prefetch_related,在另一方面,不爲每個關係的單獨的查找,並且確實在Python「接合」。這使得它可以預取許多一對多和多對一的一個對象,它不能做使用select_related,除了外鍵和select_related所支持的一個一對一的關係。它還支持GenericRelation和GenericForeignKey的預取。
...
在prefetch_related附加查詢()的查詢集之後執行已開始進行評估,並在主查詢已被執行。
所以,如果你想預取groups
,將您是否使用all
或get
執行兩個查詢。
有什麼問題你的第一個例子嗎?你只需要'user.groups.all()' – karthikr
你看着'prefetch_related'?它應該是在一個查詢 – dm03514