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

前言

我们在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

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

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

TIME_ZONE是设置时区,如果想获取中国的当前,可以设置 TIME_ZONE = ‘Asia/Shanghai‘,后面获取当前时间会用到。

# 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  

如果不设置的话,当前时间和中国时间会相差八个小时。

原文地址:https://www.cnblogs.com/yoyoketang/p/10345294.html

时间: 2024-11-02 00:26:26

python测试开发django-20.添加创建时间DateTimeField的相关文章

django-20.添加创建时间DateTimeField

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

Python测试开发-创建模态框及保存数据

Python测试开发-创建模态框及保存数据 原创: fin  测试开发社区  前天 什么是模态框? 模态框是指的在覆盖在父窗体上的子窗体.可用来做交互,我们经常会看到模态框用来登录.确定等等,到底是怎么实现这种弹出效果,bootstrap已经为我们提供了相应的组件. 1.界面原型 点击添加,弹出模态框, 然后输入 用户:tester, 消息:你好.如下图1所示: ▲图1 再点击保存,那么数据库就存入了以上输入的数据,查看界面的用户列表会显示tester,如下图2所示: ▲图2 2.开发过程 接下

2019第一期《python测试开发》课程,10月13号开学

2019第一期<python测试开发>课程,10月13号开学! 主讲老师:上海-悠悠 上课方式:QQ群视频在线教学,方便交流 本期上课时间:10月13号-12月8号,每周六.周日晚上20:30-22:30 报名费:报名费2000一人(周期2个月) 联系QQ:283340479 课表如下 课程主要涉及的内容: 1.httprunner框架以及web平台做接口自动化测试 (装逼必备) 2.django平台开发 (python开发必会) 3.pytest框架结合selenium做web自动化测试 (

python测试开发django-41.crispy-forms设计标签式导航菜单(TabHolder)

前言 xadmin的详情页面主要是用form_layout布局,学会了完全可以不用写html代码,也能做出很好看的页面. xadmin的html页面是用的Bootstrap3框架设计的,layout布局用到的是django-crispy-forms框架,本篇详细讲下django-crispy-forms的官方文档案例 django-crispy-forms 当我们使用xadmin后台的时候,在INSTALLED_APPS里面同时添加了xadmin和crispy_forms这2个app,xadmi

python测试开发django-16.JsonResponse返回中文编码问题

前言 django查询到的结果,用JsonResponse返回在页面上显示类似于\u4e2d\u6587 ,注意这个不叫乱码,这个是unicode编码,python3默认返回的编码 遇到问题 接着前面的User表,测试数据如下 user_name psw mail yoyo 123456 [email protected] yoyo2 111111 1 yoyo5 111111 0 接着上一篇[python测试开发django-15.查询结果转json(serializers)],如果数据库里面

python测试开发之_字符串练习

编程学习是个漫长.逐渐累加复杂度.综合难度的一门工程.需要自我驱动,督促自己往前走.Python测试开发是本年度重点学习目标. 今天来一个字符串的练习题,重在思路,不断训练自己的思维. 题目:找出字符串中出现次数最多的字符,并输出其出现的位置 代码实现: #encoding=UTF-8 s = "aaabbbhhiijk" letter_count_dict={} for i in s: if letter_count_dict.has_key(i): #判断是否在字典中出现过 let

Python自动化开发 - Django基础

本节内容 一.什么是web框架 二.MVC和MTV视图 三.Django基本命令 四.路由配置系统 五.编写视图 六.Template 七.ORM 一.什么是web框架 对于所有的web应用,本质上其实就是一个socket服务端,用户的浏览器就是一个socket客户端 #!/usr/bin/env python #coding:utf-8 import socket def handle_request(client): buf = client.recv(1024) client.send("

python测试开发django-60.使用token登录(TokenAuthentication)

前言 现在很多接口项目在登录的时候返回一个token,登录后的拿着这个token去访问访问登录之后的请求. 本篇使用djangorestframework框架写一个登陆的接口,登录成功后返回token. 环境准备: python 3.6 django 2.1.2 TokenAuthentication django rest framework权限和认证有四种方式: BasicAuthentication 此身份验证方案使用HTTP基本身份验证,根据用户的用户名和密码进行签名.基本身份验证通常仅

python测试开发django-39.xadmin详情页面布局form_layout

前言 xadmin的详情页面默认是一行展示一个字段,可以使用form_layout对详情页面的布局重新设计. 可以设置必填和非必填字段,也可以设置不显示,不可以编辑的字段. models模块 先在models.py建2张表 class ArticleClassify(models.Model): '''文章分类''' n = models.CharField(max_length=30, verbose_name="分类", default="") def __st