目錄結構
1.前言
我們通過admin管理后台新增一篇文章的時候,一般都要有【創建時間】和【最后更新時間】這2個字段,並且我們希望這2個字段的賦值規則如下:
- 第一次新增文章內容成功后:【創建時間】和【最后更新時間】的值都會被自動賦值為新增文章成功時的系統時間,此時【創建時間】和【最后更新時間】的值一定相等;
- 每次修改文章內容成功后:【創建時間】的值都不變都一直是新增文章成功時的系統時間,【最后更新時間】的值會被自動更新賦值為修改文章內容成功時的系統時間,此時【創建時間】和【最后更新時間】的值一定不相等;
細節:
①.每張數據表在設計階段,其實都應該都要有【創建時間】和【最后更新時間】這2個字段,因為這2個字段經常會被用於做數據排序展示的條件。
2.入參auto_now和入參auto_now_add
每個模型類里,都有DateTimeField和DateField和TimeField這三種類,這三種類可以分別用來創建三種不同日期類型的數據表字段;
這三種類有着相同的參數:auto_now和auto_now_add;
細節:
①.當這三種類里的任意一個類里的入參值auto_now或者auto_now_add的值被設置為True后,會導致:類里的入參editable值變為False,類里的入參blank的值變為True。
②.入參editable值為False,表示:對應表字段不會被展示在admin管理后台里的任何一個頁面里比如不會展示在新增頁面不會展示在修改頁面;
③.入參blank的值為True,表示: 允許用戶在新增/編輯頁面中不用輸入對應表字段的值;
④.入參auto_now和入參auto_now_add的值不能同時設置為True;
2.1.入參auto_now的相關知識點
入參auto_now的默認值為False;
當入參auto_now的值被設置為True,表示:當一條新數據被修改成功后,將該入參auto_now對應的表字段的值設置為修改成功時的系統時間;
2.2.入參auto_now_add的相關知識點
入參auto_now_add的默認值為False;
當入參auto_now_add的值被設置為True,表示:當一條新數據被創建成功后,將該入參auto_now_add對應的表字段的值設置為創建成功時的系統時間,以后修改這條新數據時,該表字段的值不會再更新;
3.完整的操作流程
3.1.第一步:創建一個模型類
# 新增一個Article類 class Article(models.Model): '''文章''' title = models.CharField(max_length=30) # 標題 body = models.TextField() # 正文(因為文章的正文字數會很多,所以需要使用該類TextField) author = models.CharField(max_length=10) # 作者 create_time = models.DateTimeField(auto_now_add=True) # 創建時間 update_time = models.DateTimeField(auto_now=True) # 更新時間
3.2.第二步:創建數據表
通過遷移相關的命令行,比如【python manage.py makemigrations】和【python manage.py migrate】進行創建,相關操作在之前的博客有提到,這里不具體再展開描述;
3.3.第三步:【admin.py】里進行配置
class ControllerArticle(admin.ModelAdmin): list_display = ("title","author","body","create_time","update_time") search_fields = ("title",) admin.site.register(models.Article,ControllerArticle)
3.4.第四步:成功登陸admin管理后台
3.5.第五步:成功新增一篇文章
3.6.第六步:成功更新一篇文章