簡體   English   中英

Django prefetch_related緩存不反映更改

[英]Django prefetch_related cache not reflecting the changes

我有一個樣板銀行 我有六個實體

這是我的預取代碼。

queryset = Banks.objects.all().prefetch_related('field1','field2')

當我在Banks模型中輸入新實體並獲取數據時,我仍然僅獲得舊數據。 下載數據時,新添加的實體未得到反映。

請記住,與QuerySet一樣,任何暗示不同數據庫查詢的后續鏈接方法都將忽略先前緩存的結果,並使用新的數據庫查詢來檢索數據。 因此,如果您編寫以下內容:

>>> pizzas = Pizza.objects.prefetch_related('toppings')
>>> [list(pizza.toppings.filter(spicy=True)) for pizza in pizzas]

…然后預取pizza.toppings.all()的事實將無濟於事。 prefetch_related('toppings') pizza.toppings.all() prefetch_related('toppings')暗示pizza.toppings.all() ,但pizza.toppings.filter()是一個新的不同查詢。 預取的緩存在這里無濟於事。 實際上,這會影響性能,因為您已經執行了未使用的數據庫查詢。 因此,請謹慎使用此功能!

另外,如果在相關管理器上調用數據庫更改方法add()remove()clear()set() ,則將清除該關系的任何預取緩存。

來自文檔

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM