誰かがget_queryset
をオーバーライドし、self
でクエリセットを参照してページを完全にキャッシュする理由を説明できますか?データベースの更新が行われるまでに5分以上待つ必要があります。get_querysetを無効にすると、データが古くなっているListViewで頭痛が発生する
私は各オブジェクトに一時的な値を保存して、それをテンプレートに渡そうとしています。
例3ではうまく動作していますが、実際には動作させるために何をしたのか分かりませんので、どんな洞察も素晴らしいでしょう!
例1:数分間キャッシュが、OK 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' 今は動作しません
メソッドを含めずに自動的にクエリセットを呼び出すだけの場合は、キャッシュやデータベースの更新はすぐに表示されますが、一時データはテンプレートに到達しません。 クラスAppointmentListView(リストビュー):
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
偉大な答え、感謝デレク。 –