【问题标题】:django __date returns None in MySQL while it returns date object in Sqlite3django __date 在 MySQL 中返回 None 而在 Sqlite3 中返回日期对象
【发布时间】:2021-10-30 04:41:51
【问题描述】:

简单的问题:

Model.objects.values('some_datetime_field__date',)

使用 sqlite 返回正确的日期值,但在 MySQL 5.7 中返回 Nones

模型如下:

class Inbound(models.Model):
    effective_date = models.DateTimeField(null=False, blank=True)
    number = models.IntegerField()
    # other fields.

我使用下面的代码按日期计算数字(仅限日期,而不是日期时间)

daily_changes = Inbound.objects.all().values('effective_date__date')\
  .annotate(total_change=Sum('number'))

在 sqlite3 上运行良好,但在 MYSQL 上失败 调试后是因为Inbound.objects.values('effective_date__date')在Mysql中只返回了Nones

【问题讨论】:

  • some_datetime_field__date 是否存在,是否有值
  • 要改善您的体验,请take the tour 并阅读how to askOn Topic question,然后查看Question Check listperfect question 以及如何创建Minimal, Complete and Verifiable Example
  • @RiggsFolly 首先抱歉格式错误。但是这个问题非常可笑,真的让我很生气。 some_datetime_field 具有正确的日期时间值,但 some_datetime_field__date 只返回无。它在 sqlite3 中工作正常,但在 mysql 上出错。
  • 好吧,我们最好看看架构和数据内容的概念
  • 要点 你原来的问题没有提到sqlitemysql 发帖前请三思

标签: mysql django sqlite datetime


【解决方案1】:

这是 Django values() 方法声明:

values(*fields, **expressions)

如您所见,您的模型的some_datetime_field 是一个字段,而some_datetime_field__date 不是您的模型的字段。

【讨论】:

  • Model.objects.values('some_datetime_field__date',) 使用 sqlite3 工作正常
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-01-25
  • 2018-09-14
  • 2020-04-17
  • 1970-01-01
  • 2020-10-08
  • 2021-08-12
相关资源
最近更新 更多