我目前正在尝试在Django 2.0中按星期几过滤我的QuerySet结果
我无法为我的生活获取django week_day过滤器datetime__week_day
以返回任何结果。
模型
class Session(models.Model):
def __str__(self):
return str.join(', ', (str(self.game.name), str(self.datetime_created), str(self.start)))
game = models.ForeignKey(
'Game',
on_delete=models.PROTECT,
blank=False,
null=False,
)
datetime_created = models.DateTimeField(auto_now_add=True,)
start = models.DateTimeField(blank=True, null=True,)
end_time = models.TimeField(blank=True, null=True,)
competitive = models.BooleanField(default=False,)
过滤
filtered_sessions = Session.objects.filter(
start__week_day=2,
).exclude(start__isnull=True)
我目前在sessions表(MySQL后端)中有一个包含日期时间2018-04-30 23:51:42.000000
的条目,所以我希望这个QuerySet包含星期一发生的'Session'。
回顾文件,本周从星期日(1)到星期六(7)
我的设置USE_TZ
TIME_ZONE='UTC'
。{。}
无论这些设置如何,我还尝试用0-8(包括,以防万一)的值替换start__week_day=2
我的问题是:为什么我正在尝试的不会返回任何结果?
如果我遗漏了一些有助于回答我问题的内容,请告诉我 谢谢!
修改
我以后试图在数据库中运行直接查询(SELECT * FROM mysite_session WHERE DAYOFWEEK('start') IN (0-8);
)
没有结果数据库。
答案 0 :(得分:0)
经过几个小时的研究和测试,结果发现我的问题确实是由于USE_TZ
,而不是直接。
问题是我没有将我的时区正确导入MySQL数据库
首先,我没有必要的表格(我在第60-72行找到here)
其次,我没有正确设置我的时区
我跑了mysql_tz_info_to_sql /usr/share/zoneinfo | mysql -u root
我应该去哪里
mysql_tz_info_to_sql /usr/share/zoneinfo/ | mysql -u root mysql
在正确运行该命令并确保我确实拥有数据库中的表之后,我能够成功执行Django过滤器。
感谢所有帮助过的人,因为如果没有你的意见我就不会发现这个问题!