当前位置: 首页 > 面试题库 >

DateTimeField查询集在Django中返回None

狄飞尘
2023-03-14
问题内容

我试图创建一个查询集以获取DateTimeField的值,该值是数据库中的DATETIME。

models.py中的类:

class ChangeMetrics(models.Model):
    id = models.IntegerField(primary_key=True)
    file_id = models.ForeignKey(File, db_column = 'file_id')
    version_id = models.ForeignKey(Version, db_column = 'version_id')
    function_id = models.ForeignKey(Function, blank=True, db_column = 'function_id')
    date = models.DateTimeField(blank=True, null=True)
    user = models.TextField(blank=True)
    changed = models.IntegerField(blank=True, null=True)

数据库中的字段:

date DATETIME

元组已填充到数据库中,并且直接在DB上运行SQL查询运行良好。

这是我当前在Django中使用的查询集:

queryset = ChangeMetrics.objects.filter(~Q(changed=None), ~Q(date=None), ~Q(version_id=None))

我已经尝试过原始查询以及使用exclude()的查询版本,但是对于日期仍然返回None。

我正在通过for循环访问queryset中的条目,并且仅通过for循环内的entry.date访问日期。

编辑:Django版本1.6.5我也尝试过通过Django shell获取值,但没有成功。

有什么想法可能有问题吗?


问题答案:

不知道您是否能够解决这个问题,但是我遇到了这个问题并能够解决。

因此,Django迁移正在数据库中将列创建为datetime(6)而不是datetime。这导致Django模型无法实例化Datetime对象。

ALTER TABLE `my_table` 
MODIFY COLUMN `created` datetime NOT NULL

运行后,如果解决了我的问题。也许在您的情况下,您可以尝试修改为datetime(6)。



 类似资料:
  • 问题内容: 我有点困惑如何使用在Django的。例如,一个对象Blog ,以及与该对象相关的attribute entry_set。是什么意思? 如果有人可以使用此示例显示可能的输出,我将不胜感激。 问题答案: 你看到的是反向相关的对象查找。 在你的示例中: 现在,给定类型为的对象,你将可以访问相关对象-这是一个正向关系。该是一个反向查找类变量的Django为你看跌期权。 因此,给定对象-你将执行

  • 问题内容: 建议的用于检查查询是否返回任何结果的惯用法是什么? 例: 我想有几种不同的检查方法,但是我想知道一个有经验的Django用户将如何做。文档中的大多数示例只是忽略了什么都没有发现的情况… 问题答案:

  • 在这一章中,你将学习 Django 如何连接到数据库,并将数据存储在里面。一探究竟吧! QuerySet 是什幺呢? 从本质上说,QuerySet 是给定模型的对象列表(list)。QuerySet 允许您从数据库中读取数据,对其进行筛选以及排序。 用例子来学习最容易的了。让我们试试这个,好吗? Django shell 打开你本地的终端(不是在Python解析器里面) 然后输入这个命令: (my

  • 问题内容: 我有一个数据库,正在运行以下查询: 上面的查询一次返回两个结果集,我不能分别触发两个查询。如何在Java类中一次处理两个结果集? 问题答案: 正确的代码来处理JDBC语句返回的多个: 重要位: 并返回以表明语句的结果只是一个数字,而不是一个。 您需要检查以了解是否还有更多结果。 确保关闭结果集或使用

  • 一般来说,我对python和编程都是新手。这段代码最终将在更大的应用程序中使用。我为任何错误提前道歉。我正在尝试从postgresql数据库中的表进行简单查询。唯一的结果是没有。尽管我知道那里有数据。提前感谢您的帮助。

  • 问题内容: 在我的models.py中,我有一些具有这种属性的模型: 我想将它们更改为: 使用 一审作品。但 导致此错误: 所以我某种程度上需要使这种铸造成为可能。对于每个没有日期的时间,我想设置一个默认日期(例如昨天)。我怎样才能做到这一点?我只在SO上找到了它,由于这个错误,它根本没有帮助。顺便说一句:我正在使用postgres和python3。 我感谢您的帮助! 如果这样更容易,我可以直接在