创建django的model时,有DateTimeField、DateField和TimeField三种类型可以用来创建日期字段,其值分别对应着datetime()、date()、time()三中对象。这三个field有着相同的参数auto_now和auto_now_add。
1.DateTimeField.auto_now
这个参数的默认值为false,设置为true时,能够在保存该字段时,将其值设置为当前时间,并且每次修改model,都会自动更新。因此这个参数在需要存储“最后修改时间”的场景下,十分方便。需要注意的是,设置该参数为true时,并不简单地意味着字段的默认值为当前时间,而是指字段会被“强制”更新到当前时间,你无法程序中手动为字段赋值;如果使用django再带的admin管理器,那么该字段在admin中是只读的。
2.DateTimeField.auto_now_add
这个参数的默认值也为False,设置为True时,会在model对象第一次被创建时,将字段的值设置为创建时的时间,以后修改对象时,字段的值不会再更新。该属性通常被用在存储“创建时间”的场景下。与auto_now类似,auto_now_add也具有强制性,一旦被设置为True,就无法在程序中手动为字段赋值,在admin中字段也会成为只读的。
3.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)
4.如何将创建时间设置为“默认当前”并且可修改
那么问题来了。实际场景中,往往既希望在对象的创建时间默认被设置为当前值,又希望能在日后修改它。怎么实现这种需求呢?
django中所有的model字段都拥有一个default参数,用来给字段设置默认值。可以用default=timezone.now来替换auto_now=True或auto_now_add=True。timezone.now对应着django.utils.timezone.now(),因此需要写成类似下面的形式:
from django.db import models import django.utils.timezone as timezone class Doc(models.Model): add_date = models.DateTimeField('保存日期',default = timezone.now) mod_date = models.DateTimeField('最后修改日期', auto_now = True)
相关推荐
在Django中,DateTimeField是用于存储日期和时间的字段类型,它默认会保存到数据库时包含微秒的精度。然而,在某些情况下,你可能希望避免这种精度,特别是在与前端应用或其他系统交互时,可能会遇到微秒不兼容或...
Django提供了丰富的字段类型和管理选项,如CharField、IntegerField、DateTimeField等,以及自定义方法和Meta类用于进一步配置。模型类的实例化会自动创建数据库表,实现了ORM(对象关系映射)。 视图是应用的控制...
在实际开发中,Django的这些特性使开发者能快速构建出功能完善的Web应用,同时保证代码的整洁和可维护性,即便是在紧张的时间表下。"django-master"可能是一个Django项目的源码仓库,包含了整个项目的结构和文件,可...
在这个项目中,我们将深入探讨如何利用Django 3的各项特性来构建一个完整的博客系统。 【主要知识点】 1. Django框架基础: - MTV架构:理解模型(Model)、模板(Template)和视图(View)之间的关系,以及它们...
"RSwTA"可能代表"基于Django的博客系统构建过程"或者"使用Django实现的博客系统",但具体含义没有明确给出。因此,我们将重点放在Django博客系统的一般设计和实现上。 1. **环境搭建** 在开始项目之前,确保你已经...
下面,我们将深入探讨如何利用Django创建一个功能丰富的博客系统。 1. **Django的安装与设置** 在开始之前,确保已经安装了Python环境。然后,通过pip安装Django: ``` pip install django ``` 安装完成后,...
Django 安装与设置** 安装 Django 可以通过 pip,Python 的包管理器来完成。在命令行中输入 `pip install django` 即可。安装完成后,可以使用 `django-admin startproject myproject` 命令创建一个新的项目,其中 ...
这将在当前目录下创建一个名为"myblog"的文件夹,包含Django项目的结构。 3. **配置应用** 在项目文件夹内,创建一个新应用,如"blog": ``` python manage.py startapp blog ``` 在`settings.py`文件中,将...
在本项目"blog_in_django"中,我们将深入探讨如何使用Python的Web框架Django来构建一个个人博客系统。这个项目的核心目标是学习和实践Django的各个方面,从而熟悉其工作流程并掌握创建动态网站的基本技能。Django以...
"curso-django:在Django站点上进行Python编程" 是一个关于使用Python的Django框架构建Web应用的课程。这个课程可能涵盖了多个方面,旨在帮助学习者熟练掌握Django的用法,从而在Web开发中实现高效编程。下面将详细...
这个框架以其高效、安全和可扩展性而闻名,广泛用于构建内容管理系统、社交网络、API 服务等各类 Web 应用。 **创建 Django 项目** 在开始使用 Django 创建应用之前,首先需要确保已经安装了 Django。可以通过...
**Django简介** Django是Python编程语言中的一个高级Web框架,它遵循“干(Don't Repeat Yourself)”原则,旨在简化开发过程并提高代码复用性。Django以其强大、安全和快速的特点,在Web开发领域备受青睐。这个教程...
1. **Django模型**:如何定义模型字段,如CharField、TextField、DateTimeField等,以及如何设置外键(ForeignKey)关联。 2. **视图处理**:理解GET和POST请求的区别,以及如何从视图中获取和处理数据。 3. **...
【Python与Django框架简介】 Python是一种高级编程语言,以其简洁、易读的语法和强大的功能而受到全球程序员的喜爱。它被广泛应用于Web开发、数据分析、人工智能等多个领域。Python的库生态系统极其丰富,使得...
**Django博客系统详解** Django是一个用Python编写的高级Web框架,它遵循“DRY(Don't Repeat Yourself)”原则,旨在简化Web应用的开发过程。本篇将深入探讨如何使用Django来构建一个功能完备的个人博客系统。 ##...
这会在当前目录下生成一个名为`try_django`的文件夹,包含项目的基本结构。 ### 应用创建 在Django项目中,应用是可重用的代码单元。为了我们的推文功能,创建一个新的应用。进入项目目录,运行`python manage.py ...
综上所述,"django-datetime" 可能是对 Django 原生日期时间功能的扩展,提供了更便捷的日期时间设置、管理或者其他高级功能。在实际项目中,合理利用这些工具可以极大地提高开发效率并优化用户体验。如果你需要详细...
Django提供了一整套功能,包括ORM(对象关系映射)系统、内置的模板引擎、强大的表单处理以及内置的认证和管理界面,使得开发者可以快速构建高效、安全的Web应用。 **项目结构** 在"Blog-App-in-Django"项目中,...
在Windows 64位系统上安装Django 2.1.15,首先需要确保已安装Python 3.x(推荐3.6+版本),然后通过命令行使用pip来安装: ``` pip install Django==2.1.15 ``` 3. **Django项目创建** 创建一个新的Django项目...
【标题】:“django复习笔记:一个简单的文件分享系统” 在这个笔记中,我们将深入探讨如何使用Django框架构建一个基础的文件分享系统。Django是一个高级的Python Web框架,它鼓励快速开发并注重代码的可读性。对于...