python测试开发django-20.添加创建时间DateTimeField
2021/6/2 22:23:18
本文主要是介绍python测试开发django-20.添加创建时间DateTimeField,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
前言我们在admin后台发布一篇文章的时候,一般会有创建时间和最后更新时间这2个字段,创建时间就是第一次编辑文章的时候自动添加的,最后更新时间就是每次修改文章的内容后自动更新
在models.py建表的时候,设置creat_time和update_time类型为DateTimeField,添加auto_now_add和auto_now参数
创建django的model时,有DateTimeField、DateField和TimeField三种类型可以用来创建日期字段,其值分别对应着datetime()、date()、time()三中对象。这三个field有着相同的参数auto_now和auto_now_add
auto_now_add 默认值为false
这个参数的默认值为False,设置为True时,会在model对象第一次被创建时,将字段的值设置为创建时的时间,以后修改对象时,字段的值不会再更新。
该属性通常被用在存储“创建时间”的场景下。与auto_now类似,auto_now_add也具有强制性,一旦被设置为True,就无法在程序中手动为字段赋值,在admin中字段也会成为只读的。
auto_now 默认值为false
这个参数的默认值为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和USE_TZTIME_ZONE是设置时区,如果想获取中国的当前,可以设置 TIME_ZONE = 'Asia/Shanghai',后面获取当前时间会用到。
同时把USE_TZ设置为False,要不然数据库的实际和当前系统时间不一致
# 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后台添加一条数据,时间就是当前时间,数据库查询到也是当前时间了
这篇关于python测试开发django-20.添加创建时间DateTimeField的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-21Python编程基础教程
- 2024-11-20Python编程基础与实践
- 2024-11-20Python编程基础与高级应用
- 2024-11-19Python 基础编程教程
- 2024-11-19Python基础入门教程
- 2024-11-17在FastAPI项目中添加一个生产级别的数据库——本地环境搭建指南
- 2024-11-16`PyMuPDF4LLM`:提取PDF数据的神器
- 2024-11-16四种数据科学Web界面框架快速对比:Rio、Reflex、Streamlit和Plotly Dash
- 2024-11-14获取参数学习:Python编程入门教程
- 2024-11-14Python编程基础入门