python測試開發django(18)--添加創建時間DateTimeField


前言

我們在admin后台發布一篇文章的時候,一般會有創建時間和最后更新時間這2個字段,創建時間就是第一次編輯文章的時候自動添加的,最后更新時間就是每次修改文章的內容后自動更新

在models.py建表的時候,設置create_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 默認為false

這個參數的默認值為False,設置為True時,會在model對象第一次被創建時,將字段的值設置為創建時的時間,以后修改對象時,字段的值不會再更新。

該屬性通常被用在存儲“創建時間”的場景下。與auto_now類似,auto_now_add也具有強制性,一旦被設置為True,就無法在程序中手動為字段賦值,在admin中字段也會成為只讀的。

auto_now 默認值為false

這個參數的默認值為false,設置為true時,能夠在保存該字段時,將其值設置為當前時間,並且每次修改model,都會自動更新。因此這個參數再需要存儲“最后修改時間”的場景下,十分方便。

需要注意的是,設置該參數為true時,並不簡單地意味着字段的默認值為當前時間,而是指字段會被“強制”更新到當前時間,你無法在程序中手動為字段賦值;

如果使用django自帶的admin管理器,那么該字段在admin中是只讀的。

在models.py下新建一個Articles類,添加title、body、auth、create_time、update_time字段。

CharField是字符串類型,必須要有max_length參數,當正文的文本內容很多時,需使用TextField

# coding:utf-8
from django.db import models

# Create your models here.
#新建一個Man類,繼承自models.Model
class Articles(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=True表示允許在表單中不輸入值。

admin.py注冊表

在admin.py添加注冊表的信息,然后執行下面兩句,同步數據庫(先后順序可隨意)

python manage.py makemigrations
python manage.py migrate

 

# coding:utf-8
from django.db import models

# Create your models here.
#新建一個Man類,繼承自models.Model
class Articles(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)  #最后更新時間

 admin后台

打開admin后台,新增一條記錄

 

 編輯標題、正文、作者之后保存

 

 列表頁面顯示結果如下,如果重新編輯的話,最后更新時間也會更新

 

 

 

 修改后,update time時間變了;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM