Django QuerySet通过week_day过滤没有返回任何内容

时间:2018-04-26 06:28:23

标签: python django datetime django-queryset

我目前正在尝试在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);
没有结果数据库。

1 个答案:

答案 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过滤器。

感谢所有帮助过的人,因为如果没有你的意见我就不会发现这个问题!