【问题标题】:Django MonthArchiveView returning wrong queryset on the 1st of the month (caching?)Django MonthArchiveView 在本月 1 日返回错误的查询集(缓存?)
【发布时间】:2015-10-01 12:27:33
【问题描述】:

我有一个使用 MonthArchiveView 创建活动日历的网站。设置非常基本。

但是,在每月的第一天(若干小时),它会返回上个月的事件。我知道在查询集过滤器中使用 datetime 会导致缓存,但此 CBV 的 get_queryset() 不需要任何自定义过滤器:

def get_queryset(self):
    queryset = Lecture.objects.filter(status=True).order_by('lecture_date')
    return queryset

这是 Django 的一个已知问题吗?如果我在 shell 中运行东西,我会得到正确的答案,这让我怀疑问题在于 MonthArchiveView 可能不是整个线程安全的......

(我想我可以尝试覆盖 get_queryset 以强制返回事件,但基本默认行为有这个奇怪的错误似乎很奇怪。)

【问题讨论】:

  • 你能显示导致问题的视图吗?这可能是一个时区问题,例如它是您所在的第一个位置,但服务器时区的前一天。
  • 请显示完整视图。

标签: python django


【解决方案1】:

我遇到了类似的问题,在我执行以下操作后它得到了解决:

我在语句后添加了 .values() 或 .values_list(),

Lecture.objects.filter(status=True).order_by('lecture_date').values(´field´)

试一试。

【讨论】:

  • 这是关于这个的奇怪的事情 --- 如果我尝试任何作为解决方案,一旦我保存代码,服务器将重新启动,转储缓存并且问题消失一个月! :-) 所以,我一定会尝试,但要到 11 月才能知道它是否有效!
猜你喜欢
  • 1970-01-01
  • 2011-06-16
  • 2020-11-29
  • 2021-06-02
  • 1970-01-01
  • 2013-01-05
  • 1970-01-01
  • 2013-03-22
  • 1970-01-01
相关资源
最近更新 更多