首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Django中返回None的DateTimeField查询集

在Django中返回None的DateTimeField查询集
EN

Stack Overflow用户
提问于 2014-07-03 08:39:55
回答 6查看 5.8K关注 0票数 8

我正在尝试创建一个查询集,用于获取DateTimeField的值,这是DB中的DATETIME。

Models.py中的类:

代码语言:javascript
运行
复制
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)

数据库中的字段:

代码语言:javascript
运行
复制
date DATETIME

元组是在数据库中填充的,直接在DB上运行SQL查询运行得很好。

这是我目前在Django中使用的queryset:

代码语言:javascript
运行
复制
queryset = ChangeMetrics.objects.filter(~Q(changed=None), ~Q(date=None), ~Q(version_id=None))

我尝试了一个原始查询,也尝试了使用exclude()的查询版本,但它仍然没有返回任何日期。

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

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

有什么可能会出错的想法吗?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2015-12-23 16:14:02

不确定你是否能解决这个问题,但我只是遇到了这个问题,并能够解决它。

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

代码语言:javascript
运行
复制
ALTER TABLE `my_table` 
MODIFY COLUMN `created` datetime NOT NULL

如果解决了我的问题。在您的情况下,您可以尝试修改日期时间(6)。

票数 4
EN

Stack Overflow用户

发布于 2016-02-26 13:01:31

我们在将代码从本地环境(Mac )推到App时弹出了同样的问题。虽然改变亚历山大提到的字段是日期时间,而不是日期时间(6)开始使它们出现,我们失去了微秒。最后,我们意识到在本地环境中我们运行的是MySQLdb 1.2.5,但是当部署到deploying时,即使我们将“最新”指定为MySQLdb的版本,它也只是拉动1.2.4b4,硬编码到1.2.5解决了这个问题。

票数 2
EN

Stack Overflow用户

发布于 2014-07-03 08:45:47

请您试试这个解决方案:

代码语言:javascript
运行
复制
queryset = list(ChangeMetrics.objects.filter(changed__isnull=False, date__isnull=False, version_id__isnull=False))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24548902

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档