有人可以解釋爲什麼覆蓋get_queryset
和通過self
引用查詢集完全緩存頁面嗎?在對數據庫顯示進行更新之前,我需要等待5分鐘或更長時間。覆蓋get_queryset導致ListView中的緩存頭痛,其中數據仍然陳舊
我試圖保存一個臨時值到每個對象,並將其傳遞給模板。
我已經在示例3中使用了一切正常和花哨的工作,但並不真正瞭解我做了什麼來使其工作,所以任何洞察力都會很棒!
例1:緩存幾分鐘,但r.css = 'ABC' 工作確定
class AppointmentListView(ListView):
qs = Appointment.objects.prefetch_related('client', 'patients')
def get_queryset(self):
for r in self.qs:
r.css = 'abc' #<-passes temp value to template ok
return self.qs
例2:沒有緩存的問題,但r.css = 'ABC',現在不工作
如果我沒有包含方法並且只是自動調用queryset,則不會立即顯示緩存和數據庫更新,但是我的臨時數據不會到達模板。 類AppointmentListView(ListView控件):
queryset = Appointment.objects.prefetch_related('client','patients')
for r in queryset:
r.css = 'abc' #<- NOT passed to template
例3:沒有緩存的問題,r.css = 'ABC' 工作正常
最後,如果我把一切的方法,這一切工作正常 - 溫度數據到達模板並且沒有緩存。
class AppointmentListView(ListView):
def get_queryset(self):
qs = Appointment.objects.prefetch_related('client','patients')
for r in qs:
r.css = 'abc' #<-passes to template ok
return qs
很好的答案,謝謝德里克。 –