我已經構建了一個Django站點來列出當前和即將發生的服務中斷。查詢不刷新,除非我重新啓動Apache服務。它會抓住我添加的新消息,但存在不一致。Django查詢不刷新
我在下面運行它。
- Apache 2.2的
- 的Postgres 9.2
- 的Django 1.5.1
- 的Windows 2008
的看法是
class MessageViewMixin(object):
queryset = Message.objects.filter(message_type__id=1
).filter(inactive=False
).filter(start_time__range=(now, nextweek)
).order_by('-start_time', '-end_time')
context_object_name = 'upcoming_list'
def get_context_data(self, **kwargs):
context = super(MessageViewMixin, self).get_context_data(**kwargs)
context['current_list'] = Message.objects.filter(
inactive=False
).filter(
Q(message_type__id=1) | Q(message_type__id=2)
).filter(
Q(end_time__isnull=True) | Q(end_time__gte=now)
).filter(start_time__lte=now
).order_by('-start_time', '-end_time')
return context
所以upcoming_list是在中斷查詢未來一週。當中斷髮生時,該消息現在應該落在current_list之下。除非我重新啓動Apache,否則這不會發生。
它可能是由於'context_object_name ='cominging_list''的緩存 - 嘗試刪除該 – karthikr
這似乎已經做到了。我不明白爲什麼更改上下文名稱會導致緩存問題。我現在正在閱讀文檔以嘗試理解。 – Ross
我想這是這樣的:'context_object_name'就像是上下文中的一個關鍵字,因爲對象在後續請求中不會發生變化,所以假設沒有任何變化,並且緩存不會失效,所以它最終會給出每次都從緩存中得到相同的結果集 – karthikr