對於此代碼檢索與後續查詢的初始查詢集:Django的查詢,對查詢集
people_pool = People.objects.filter(last_name__in = last_names)
for first_name in first_names:
for person in people_pool.filter(first_name = first_name):
# do something with each person.
我從Django的查詢集的理解是,查詢實際上不會,直到你「需要」的數據執行,從而可以優化鏈接的查詢集。但是,如果我沒有弄錯,那在這裏似乎對我不利;將執行的第一個查詢本質上將等同於:
People.objects.filter(last_name__in = last_names, first_name = first_name) # for the first first_name in first_names
並且需要爲每個單個名字查詢數據庫。如果是這種情況,那麼讓Django實際檢索people_pool
,然後在檢索到的python對象上運行後續篩選器,使數據庫保持獨立的正確方法是什麼?
你在想什麼?你可能想看看'select_related' – karthikr
我不想獲取相關模型的任何屬性。試圖訪問person的直接字段,但希望以某種方式限制通過由python執行篩選而不是作爲單獨查詢運行的查詢數量。 –