我已经构建了一个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