Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >python测试开发django-20.添加创建时间DateTimeField

python测试开发django-20.添加创建时间DateTimeField

作者头像
上海-悠悠
发布于 2019-03-07 03:50:03
发布于 2019-03-07 03:50:03
1.3K00
代码可运行
举报
运行总次数:0
代码可运行

前言

我们在admin后台发布一篇文章的时候,一般会有创建时间和最后更新时间这2个字段,创建时间就是第一次编辑文章的时候自动添加的,最后更新时间就是每次修改文章的内容后自动更新 在models.py建表的时候,设置creat_time和update_time类型为DateTimeField,添加auto_now_add和auto_now参数

DateTimeField

创建django的model时,有DateTimeField、DateField和TimeField三种类型可以用来创建日期字段,其值分别对应着datetime()、date()、time()三中对象。这三个field有着相同的参数auto_now和auto_now_add

auto_now_add 默认值为fals

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

auto_now_add 默认值为fals

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

在models.py下新建一个Article类,添加tile、body、auth、create_time、update_time字段。CharField是字符串类型,必须要有max_length参数,当正文的文本内容很多时,需使用TextField

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class Article(models.Model):
    '''文章'''
    title = models.CharField(max_length=30)  # 标题
    body = models.TextField()                # 正文
    auth = models.CharField(max_length=10)   # 作者
    # 创建时间
    create_time = models.DateTimeField(auto_now_add=True)
    # 最后更新时间
    update_time = models.DateTimeField(auto_now=True)

    def __str__(self):
        return self.__doc__ + "title->" + self.title

当auto_now和auto_now_add被设置为True后,会导致其字段属性editable=False和blank=True的状态。editable=False将导致字段不会被呈现在admin中,blank=Ture表示允许在表单中不输入值

admin.py注册表

在admin.py添加注册表的信息,然后执行下面两句,同步数据库

python manage.py makemigrations python manage.py migrate

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class ControlArticle(admin.ModelAdmin):
    # 显示的字段
    list_display = ('title', 'body', 'auth', 'create_time', 'update_time')
    # 搜索条件
    search_fields = ('title',)

# 注册Article表
admin.site.register(models.Article, ControlArticle)

amdin后台

打开admin后台,新增一条记录

编辑标题、正文、作者之后保存

列表页面显示结果如下,如果重新编辑的话,最后更新时间也会更新

如果获取的当前时间显示和我们的时间相差八个小时,需要在setting.py设置 TIME_ZONE = ‘Asia/Shanghai’ ,参考前面的一篇https://www.cnblogs.com/yoyoketang/p/10342696.html

TIME_ZONE和USE_TZ

TIME_ZONE是设置时区,如果想获取中国的当前,可以设置 TIME_ZONE = ‘Asia/Shanghai’,后面获取当前时间会用到。 同时把USE_TZ设置为False,要不然数据库的实际和当前系统时间不一致

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# LANGUAGE_CODE = 'en-us'
LANGUAGE_CODE = 'zh-Hans'    # 设置简体中文,zh-Hant是繁体中文

# TIME_ZONE ='UTC'      # 时区
TIME_ZONE = 'Asia/Shanghai'

USE_I18N = True

USE_L10N = True

# USE_TZ = True 
USE_TZ = False

修改完之后,在admin后台添加一条数据,时间就是当前时间,数据库查询到也是当前时间了

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-02-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 从零开始学自动化测试 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
python测试开发django-21.admin后台表名称和字段显示中文
admin后台页面表名称(默认会多加一个s)和字段名称是直接显示在后台的,如果我们想设置成中文显示需加verbose_name和verbose_name_plural属性
上海-悠悠
2019/03/07
9990
python测试开发django-21.admin后台表名称和字段显示中文
python测试开发django-18.admin后台中文版
django的admin后台页面默认是英文的,不喜欢英文的话,可以改下setting.py里面的语言设置,改成中文版的显示
上海-悠悠
2019/03/07
4740
python测试开发django-rest-framework-88.反序列化
serializers.Serializer可以对modle模型中的字段序列化,并且必须写create和update两个方法。ModelSerializer可以看成是Serializer的一个升级版,功能更强大,更方便。 实际上ModelSerializer类继承了Serializer类
上海-悠悠
2021/02/03
6560
python测试开发django-rest-framework-88.反序列化
59. Django 2 DateTimeField格式 在程序中手动赋值
一般在数据模型中设置创建时间、更新时间的时候都会使用DateTimeField的格式,也会设置时间自动设置,示例如下:
Devops海洋的渔夫
2022/01/17
7300
drf框架序列化和返序列化
注意点:如果类的字段值应用在反序列化,我们可以在他的字段的属性上加上write_only=True
小小咸鱼YwY
2019/09/11
8830
django查询今天,昨天,一周,分组统计月,年
一、概述 有一个用户表,models.py内容如下: from django.db import models # Create your models here. class User(models.Model):   #用户名表     username = models.CharField(max_length=16,verbose_name="用户名")     password = models.CharField(max_length=32,verbose_name="密码")     cre
py3study
2020/08/14
2.8K0
Python3+Django2配置后台管理
使用 Django 我们只需要做一些配置,就可以实现简单的后台管理系统,下面我们以新闻系统为例子来搭建后台。
用户8442333
2021/12/01
3110
python测试开发django-39.页面布局form_layout
xadmin的详情页面默认是一行展示一个字段,可以使用form_layout对详情页面的布局重新设计。 可以设置必填和非必填字段,也可以设置不显示,不可以编辑的字段。
上海-悠悠
2019/05/06
8160
python测试开发django-39.页面布局form_layout
xadmin建站后续篇
不需要建更多设置,More Settings,后期直接python manage设置
Centy Zhao
2019/12/26
5280
xadmin建站后续篇
Python:Django搭建博客
注册完后,在项目根目录中(即 manage.py 所在的目录)创建 templates 文件夹,使用 pycharm 创建项目会自动帮我们创建
用户8832503
2021/08/20
5720
django admin 对 list_filter 排序
1. https://cloud.tencent.com/developer/ask/34273
卓越笔记
2023/02/18
4930
django  admin 对 list_filter 排序
Django-通过示例定制admin后台管理
后台管理改为中文 # 将 setting.py 配置选项设置为中文 LANGUAGE_CODE = 'en-us' TIME_ZONE = 'UTC' LANGUAGE_CODE = 'zh-Hans' TIME_ZONE = 'Asia/Shanghai' image.png image.png 更改后台标题和名称(title/header) # admin.py 文件添加 修改网页title和站点header admin.site.site_header = 'XXX平台-管理系统' admi
Spaceack
2020/11/04
7600
Django-通过示例定制admin后台管理
05.Django基础五之django模型层(一)单表操作
      创建名为book的app,在book下的models.py中创建模型:
changxin7
2019/09/29
3K0
python测试开发django-rest-framework-93.联合唯一校验
前面添加商品,商品code只能添加一次可以用唯一字段校验UniqueValidator,如果用户收藏商品,一个用户可以收藏多个商品,一个商品也可以被多个人收藏。 但是同一个人针对同一个商品,只能收藏一次,于是可以用UniqueTogetherValidator联合唯一校验
上海-悠悠
2021/02/03
9370
python测试开发django-rest-framework-93.联合唯一校验
python测试开发django-77.ORM如何添加 DateTimeField 不显示毫秒
使用 django 的 orm 建模型的时候,添加 DateTimeField 字段,发现存到数据库的日期时间格式是’2020-06-28 21:30:48.481516’ 我们一般习惯的格式是’2020-06-28 21:30:48’不带后面的6位数毫秒 参考stackoverflow链接:https://stackoverflow.com/questions/46539755/how-to-add-datetimefield-in-django-without-microsecond 环境:
上海-悠悠
2020/07/01
1.5K0
python测试开发django-77.ORM如何添加 DateTimeField 不显示毫秒
Django入门教程
python3详细安装教程_超级小的大西瓜的博客-CSDN博客_python3安装
超级小的大杯柠檬水
2023/05/06
3760
BBS项目(二)
目录 BBS项目(二) ORM 创建相关表 表模型 修改admin样式 Simple-UI 注册表添加数据 注册forms类编写 注册功能前端搭建 头像实时显示功能实现 BBS项目(二) 可以在本地写或虚拟环境 添加虚拟环境 如果虚拟环境启动报错:解决 query = query.decode(errors=‘replace‘) AttributeError: ‘str‘ object has no attribute ‘decode‘ 解决办法 query = query.decode(erro
HammerZe
2022/03/24
7860
BBS项目(二)
Django项目知识点(三)
模型是数据唯一而且准确的信息来源。它包含正在储存的数据的重要字段和行为。一般来说,每一个模型都映射一个数据库表。
润森
2019/09/20
1.9K0
Django项目知识点(三)
python测试开发django-119.model_to_dict会漏掉DateTimeField字段
使用model_to_dict() 方法将 Model 模型对象转 dict 字典的时候,发现会漏掉 DateTimeField 字段
上海-悠悠
2021/09/14
5620
七日Python之路--第九天(blog与Django)
在做models之前,最好将https://docs.djangoproject.com/en/1.6/ 中的the model layer 细读。
lpe234
2020/07/28
2500
相关推荐
python测试开发django-21.admin后台表名称和字段显示中文
更多 >
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验