文档章节

Django中的日期和时间格式 DateTimeField

君君君君
 君君君君
发布于 2018/05/06 16:36
字数 949
阅读 1154
收藏 0

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

  • 创建django的model时,有DateTimeField、DateField和TimeField三种类型可以用来创建日期字段,其值分别对应着datetime()、date()、time()三中对象。这三个field有着相同的参数auto_now和auto_now_add,表面上看起来很easy,但实际使用中很容易出错,下面是一些注意点。DateTimeField.auto_now这个参数的默认值为false,设置为true时,能够在保存该字段时,将其值设置为当前时间,并且
  • 创建django的model时,有DateTimeField、DateField和TimeField三种类型可以用来创建日期字段,其值分别对应着datetime()、date()、time()三中对象。这三个field有着相同的参数auto_now和auto_now_add,表面上看起来很easy,但实际使用中很容易出错,下面是一些注意点。

    DateTimeField.auto_now

    这个参数的默认值为false,设置为true时,能够在保存该字段时,将其值设置为当前时间,并且每次修改model,都会自动更新。因此这个参数在需要存储“最后修改时间”的场景下,十分方便。需要注意的是,设置该参数为true时,并不简单地意味着字段的默认值为当前时间,而是指字段会被“强制”更新到当前时间,你无法程序中手动为字段赋值;如果使用django再带的admin管理器,那么该字段在admin中是只读的。

    DateTimeField.auto_now_add

    这个参数的默认值也为False,设置为True时,会在model对象第一次被创建时,将字段的值设置为创建时的时间,以后修改对象时,字段的值不会再更新。该属性通常被用在存储“创建时间”的场景下。与auto_now类似,auto_now_add也具有强制性,一旦被设置为True,就无法在程序中手动为字段赋值,在admin中字段也会成为只读的。

     

    admin中的日期时间字段

    auto_now和auto_now_add被设置为True后,这样做会导致字段成为editable=False和blank=True的状态。editable=False将导致字段不会被呈现在admin中,blank=Ture表示允许在表单中不输入值。此时,如果在admin的fields或fieldset中强行加入该日期时间字段,那么程序会报错,admin无法打开;如果在admin中修改对象时,想要看到日期和时间,可以将日期时间字段添加到admin类的readonly_fields中:

    class YourAdmin(admin.ModelAdmin): readonly_fields = ('save_date', 'mod_date',)admin.site.register(Tag, YourAdmin) 如何将创建时间设置为“默认当前”并且可修改

    那么问题来了。实际场景中,往往既希望在对象的创建时间默认被设置为当前值,又希望能在日后修改它。怎么实现这种需求呢?

    django中所有的model字段都拥有一个default参数,用来给字段设置默认值。可以用default=timezone.now来替换auto_now=True或auto_now_add=True。timezone.now对应着django.utils.timezone.now(),因此需要写成类似下面的形式:

    from django.db import modelsimport django.utils.timezone as timezoneclass Doc(models.Model): add_date = models.DateTimeField('保存日期',default = timezone.now) mod_date = models.DateTimeField('最后修改日期', auto_now = True

     

    html页面从数据库中读出DateTimeField字段时,显示的时间格式和数据库中存放的格式不一致,比如数据库字段内容为2016-06-03 13:00:00,但是页面显示的却是Apr. 03, 2016, 1 p.m.

    为了页面和数据库中显示一致,需要在页面格式化时间,需要添加<td>{{ infor.updatetime|date:"Y-m-d H:i:s" }}</td> 类似的过滤器。刷新页面,即可正常显示。

  • 以上是Django中的日期和时间格式 DateTimeField的内容,更多 DateTimeField 日期 格式 时间 Django 的内容,请您使用右上方搜索功能获取相关信息。

© 著作权归作者所有

君君君君
粉丝 0
博文 57
码字总数 27923
作品 0
私信 提问
Python3基础之学习笔记(十三)-Django文件上传-CBV和FBV-URL-ORM

文章目录 1. Django 1. Django 1.2 Django获取多个数据以及文件上传 前端代码 form要加 views.py 1.3 Django的CBV和FBV CBV指一个url对应一个类,FBV指一个url对应一个函数。 CBV写法 url里写...

GoldenKitten
01/17
0
0
关于Django的时区设置TIME_ZONE,USE_TZ的问题

在Django的settings.py中,已经将时区设置成了: 发现在Models中,使用 插入到数据库中的时间,还是UTC的时间,比北京时间差了8个小时。 发现后台一直在提醒这个警告: RuntimeWarning: Date...

乐_然
2017/10/19
647
0
django1.4中时间类型入库注意

在网站开发时一些model中是存在DateTimeField类型的,在用的过程中读取显示也没发现任何问题。 但是在数据统计时却发现了问题 事情是这样的: 我在9月1日记录了一条数据,但是在统计9月数据记...

农村程序员
2012/09/03
2.3K
0
navie时间和aware时间

navie时间和aware时间: 什么是navie时间?什么是aware时间? navie时间:不知道自己的时间表示的是哪个时区的。也就是不知道自己几斤几两。比较幼稚。 aware时间:知道自己的时间表示的是哪...

lvnian2009
2018/07/26
0
0
django的时区冲突错误 /usr/lib/python2.7/site-packages/...

这个错误大概不会影响你的一些主要功能,但是在终端会显示warning的。 错误的原因比较明显,就是 DateTimeField received a naive datetime while time zone support is active. 所谓的数据库...

vincent_y
2013/10/14
321
0

没有更多内容

加载失败,请刷新页面

加载更多

mysql免安装

参考:http://blog.csdn.net/qq_28569585/article/details/79072805 [mysqld]#设置mysql密码为空#skip-grant-tables#设置3306端口 port = 3306# 设置mysql的安装目录 basedir=E...

秋默
27分钟前
6
0
立足于SpringCloud.H + Netflix-Ribbon + Hystrix断路器(9)

《SpringCloud.H心法总纲》 继续上一篇,接下来Springcloud配置Netflix-Ribbon集成Hystrix断路器的功能。 1、添加依赖 <!--使用hystrix,测试断路器--><dependency> <groupId>org.spr......

木九天
28分钟前
4
0
Dropbox怎么共享文件?Dropbox共享文件操作

Dropbox网盘是国外的一项云存储服务,这意味着即使您使用的是其他设备,您也可以将文件复制到云中并在以后访问它们,目前支持PC、Android和MAC三大平台,为用户带来最精准的资源传输工作。就...

坚果云
30分钟前
6
0
Vant Weapp 1.0 正式版发布

1.0 来了 2018 年 8 月 11 日,我们发布了 Vant Weapp 的首个版本。16 个月以来,我们收到了 27 位开发者贡献的 1000 多次提交,也处理了 1200 多个 issue,发布了 50 多个版本。Github 的 ...

有赞coder
32分钟前
3
0
VCF文件格式详解

VCF文件全称为Variant Call Format,表示基因组的变异信息,通常为GATK和Samtools软件处理所得到。 VCF文件大致可以分为两个部分: 1、以##开头的头文件信息 ##fileformat=VCFv4.2##FILTER...

悲催的古灵武士
33分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部