首页 > 其他分享 >django naive datetime问题

django naive datetime问题

时间:2024-11-16 11:31:15浏览次数:1  
标签:11 name 16 naive django time datetime

naive datetime问题,其实就是datetime数据没有携带时间就传递给了模型类

现象:
D:\anaconda3\envs\schedule_devops\lib\site-packages\django\db\models\fields_init_.py:1367: RuntimeWarning: DateTimeField NodeStopRecord.stop_time received a naive datetime (2024-11-16 02:34:07.905087) while time zone support is active.
warnings.warn("DateTimeField %s received a naive datetime (%s)"

一番摸索发现: 当我们在django settings.py 中配置了 LANGUAGE_CODE = 'zh-hans' TIME_ZONE = 'Asia/Shanghai' USE_TZ = True 以后,也就是启动了django 自动实现utc时间和本地时间转换机制以后,正常情况下我们从页面操作的数据保存到数据中,时间和日期自动会存储为utc时间和日期(比本地时间 -8h)。但是,如果我们自己写的代码往数据库中插入数据,调用ORM 模型类传递了没有时区的datetime 就会报上面的错误。模型类会提示我们 django 模型接收到了一个没有时区的datetime,简称(naive datetime),模型类期望接收aware datetime 时间(有时区的datetime)。虽然,模型类不会强制限制我们,当我们传递了 naive datetime 时间以后也是会正常存储到数据中,只不过会发警告提示我们。我就是强迫症,看到一堆标红的警告不太舒服。那解决呢,也简单就是我们给datetime 加上时区信息在传递给模型类就不会有红色提示信息了。

我的模型类
class NodeStopRecord(models.Model):
    """
    暂停记录
    """
    node_name = models.CharField(max_length=20, verbose_name='节点英文名')
    node_status = models.SmallIntegerField(verbose_name="节点状态")
    stop_time = models.DateTimeField(verbose_name='暂停时间')
    run_time = models.DateTimeField(verbose_name='开启时间', null=True)
    create_time = models.DateTimeField(auto_now_add=True, verbose_name="创建时间")
    update_time = models.DateTimeField(auto_now=True, verbose_name="更新时间")


使用 python manage.py shell 给数据库添加几条数据
>>> naive_datetime = datetime.now() 
>>>
>>> naive_datetime                                                                              
datetime.datetime(2024, 11, 16, 11, 13, 39, 741807)  

>>> NodeStopRecord.objects.create(node_name='h123',node_status=100, stop_time=naive_datetime)   
D:\anaconda3\envs\schedule_devops\lib\site-packages\django\db\models\fields\__init__.py:1367: RuntimeWarning: DateTimeField NodeStopRecord.stop_time received a naive datetime (2024-11-16 11:13:39.741807) while time zone support is active.
  warnings.warn("DateTimeField %s received a naive datetime (%s)"
<NodeStopRecord: NodeStopRecord object (533)>
报错出现了

给datetime 加上时区传递给模型类
>>> import pytz
>>> tz = pytz.timezone('Asia/Shanghai')
>>> aware_datetime = tz.localize(naive_datetime)  
>>>
>>> aware_datetime
datetime.datetime(2024, 11, 16, 11, 13, 39, 741807, tzinfo=<DstTzInfo 'Asia/Shanghai' CST+8:00:00 STD>)
>>> NodeStopRecord.objects.create(node_name='x123',node_status=101, stop_time=aware_datetime)  
<NodeStopRecord: NodeStopRecord object (535)>
向数据据插入数据,报错消失了

去数据库查询数据
mysql> select * from nodestoprecord where node_status >= 100;
+-----+-----------+-------------+----------------------------+----------+----------------------------+----------------------------+
| id  | node_name | node_status | stop_time                  | run_time | create_time                | update_time                |
+-----+-----------+-------------+----------------------------+----------+----------------------------+----------------------------+
| 533 | h123      |         100 | 2024-11-16 03:13:39.741807 | NULL     | 2024-11-16 03:14:48.018860 | 2024-11-16 03:14:48.018860 |
| 535 | x123      |         101 | 2024-11-16 03:13:39.741807 | NULL     | 2024-11-16 03:17:59.670702 | 2024-11-16 03:17:59.670702 |
+-----+-----------+-------------+----------------------------+----------+----------------------------+----------------------------+
2 rows in set (0.00 sec)

标签:11,name,16,naive,django,time,datetime
From: https://www.cnblogs.com/littleboss/p/18549194

相关文章

  • django 数据库ORM通用的公共函数
    通用查询1、公共函数:defgeneric_query(model,filter_kwargs=None,order_by=None,limit=None,aggregate=None,annotate=None):"""通用的DjangoORM查询函数。:parammodel:Django模型类:paramfilter_kwargs:过滤条件字典:paramorder_by:......
  • 基于python+django的Spark的国漫推荐系统的设计与实现
    前言基于python+django的Spark国漫推荐系统能为国漫爱好者提供精准的内容推荐。系统先收集大量国漫数据,包括国漫名称、类型、作者、制作公司、评分、播放量、剧情简介、人物设定等信息。利用Spark的分布式计算能力对这些数据进行处理和存储。在用户方面,当新用......
  • 基于python+django的Hadoop的短视频数据分析的设计与实现
    前言基于python+django的Hadoop短视频数据分析系统可充分挖掘短视频数据价值。从各大短视频平台接口等多种数据源采集数据,利用Hadoop分布式存储海量短视频的基本信息、用户信息、播放量、点赞数、评论内容等。借助python数据分析库和django框架,清洗、预处理......
  • Django SQL 查询优化方案:性能与可读性分析
    DjangoSQL查询优化方案:性能与可读性分析目录⚙️使用DjangoORM的raw()方法进行SQL查询......
  • 高效Django随机查询优化方案
    高效的Django随机查询优化方案目录......
  • 大数据项目-Django基于机器学习实现的音乐推荐系统
    《[含文档+PPT+源码等]精品Django基于机器学习实现的音乐推荐系统》该项目含有源码、文档、PPT、配套开发软件、软件安装教程、包运行成功以及课程答疑与微信售后交流群、送查重系统不限次数免费查重等福利!数据库管理工具:phpstudy/Navicat或者phpstudy/sqlyog后台管理系统涉......
  • 大数据项目-Django基于Python实现的农产品销售量数据分析与可视化系统
    《[含文档+PPT+源码等]精品Django基于Python实现的农产品销售量数据分析与可视化系统》该项目含有源码、文档、PPT、配套开发软件、软件安装教程、包运行成功以及课程答疑与微信售后交流群、送查重系统不限次数免费查重等福利!数据库管理工具:phpstudy/Navicat或者phpstudy/sqly......
  • Python-django-flask游戏虚拟物品道具商城管理系统
    文章目录项目介绍系统开发技术路线具体实现截图开发技术django项目代码结构参考解析论文大纲目录参考核心代码部分展示源码/演示视频获取方式项目介绍游戏虚拟物品管理系统的主要使用者分为管理员和用户,实现功能包括管理员:首页、个人中心、用户管理、游戏虚拟物品......
  • Django框架表单基础
    本节主要介绍一下Django框架表单(Form)的基础知识。Django框架提供了一系列的工具和库来帮助设计人员构建表单,通过表单来接收网站用户的输入,然后处理以及响应这些用户的输入。6.1.1HTML表单Django框架表单是在HTML模板中设计完成的,其实类似于传统HTMLForm表单的应用。在传统HTML......
  • 基于 Python Django 的二手房间可视化系统分析
    博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w+、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌......