1
的號碼,我有一個名爲列表項的模式,這是我分解成其類型爲模板像這樣:Django模塊過濾器,減少查詢
list_items = ListItem.objects.filter(list__user=request.user.id)
type2list_items = list_item.filter(list__type=1)
type3list_items = list_item.filter(list__type=2)
這最終建立太多的疑問,我該怎麼做它只是一個?然後,我可以過濾到底部2個變量而不再次訪問數據庫?謝謝
AFAIK,第一個過濾器不會碰到數據庫,但最後兩個會。 – iMom0
@楊揚-momo是的,我想要一個查詢將所有記錄放入list_items中,然後以另一種方式將它們過濾到另外兩個中,而不用另一個查詢。 (就像你可以在原始sql中做的那樣) – user3376753
你總是可以將你的第一個過濾器的所有結果放到一個列表中,然後用['filter'函數]在Python中進行過濾(http://docs.python.org/2/庫/ functions.html#過濾器)。您可能需要在過濾器中添加一個'.select_related('list')',以便在訪問每個項目的'list'字段時避免額外的查詢。 – lanzz