日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Django中模型类 属性-学习笔记

發布時間:2023/12/20 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Django中模型类 属性-学习笔记 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

定義屬性

Django根據屬性的類型確定以下信息:

  • 當前選擇的數據庫支持字段的類型
  • 渲染管理表單時使用的默認html控件
  • 在管理站點最低限度的驗證

django會為表創建自動增長的主鍵列,每個模型只能有一個主鍵列,如果使用選項設置某屬性為主鍵列后django不會再創建自動增長的主鍵列。

默認創建的主鍵列屬性為id,可以使用pk代替,pk全拼為primary key。

注意:pk是主鍵的別名,若主鍵名為id2,那么pk是id2的別名。

屬性命名限制:

  • 不能是python的保留關鍵字。
  • 不允許使用連續的下劃線,這是由django的查詢方式決定的,在第4節會詳細講解查詢。
  • 定義屬性時需要指定字段類型,通過字段類型的參數指定選項,語法如下:
屬性=models.字段類型(選項)

字段類型

使用時需要引入django.db.models包,字段類型如下:

  • AutoField:自動增長的IntegerField,通常不用指定,不指定時Django會自動創建屬性名為id的自動增長屬性。
  • BooleanField:布爾字段,值為True或False。
  • NullBooleanField:支持Null、True、False三種值。
  • CharField(max_length=字符長度):字符串。
    • 參數max_length表示最大字符個數。
  • TextField:大文本字段,一般超過4000個字符時使用。
  • IntegerField:整數。
  • DecimalField(max_digits=None, decimal_places=None):十進制浮點數。
    • 參數max_digits表示總位數。
    • 參數decimal_places表示小數位數。
  • FloatField:浮點數。
  • DateField[auto_now=False, auto_now_add=False]):日期。
    • 參數auto_now表示每次保存對象時,自動設置該字段為當前時間,用于"最后一次修改"的時間戳,它總是使用當前日期,默認為false。
    • 參數auto_now_add表示當對象第一次被創建時自動設置當前時間,用于創建的時間戳,它總是使用當前日期,默認為false。
    • 參數auto_now_add和auto_now是相互排斥的,組合將會發生錯誤。
  • TimeField:時間,參數同DateField。
  • DateTimeField:日期時間,參數同DateField。
  • FileField:上傳文件字段。
  • ImageField:繼承于FileField,對上傳的內容進行校驗,確保是有效的圖片。

選項

通過選項實現對字段的約束,選項如下:

  • null:如果為True,表示允許為空,默認值是False。
  • blank:如果為True,則該字段允許為空白,默認值是False。
  • 對比:null是數據庫范疇的概念,blank是表單驗證范疇的
  • db_column:字段的名稱,如果未指定,則使用屬性的名稱。
  • db_index:若值為True, 則在表中會為此字段創建索引,默認值是False。
  • default:默認值。
  • primary_key:若為True,則該字段會成為模型的主鍵字段,默認值是False,一般作為AutoField的選項使用。
  • unique:如果為True, 這個字段在表中必須有唯一值,默認值是False。

綜合演示

修改booktest/models.py中的模型類,代碼如下:

from django.db import models#定義圖書模型類BookInfo class BookInfo(models.Model):#btitle = models.CharField(max_length=20)#圖書名稱btitle = models.CharField(max_length=20, db_column='title')#通過db_column指定btitle對應表格中字段的名字為titlebpub_date = models.DateField()#發布日期bread = models.IntegerField(default=0)#閱讀量bcomment = models.IntegerField(default=0)#評論量isDelete = models.BooleanField(default=False)#邏輯刪除#定義英雄模型類HeroInfo class HeroInfo(models.Model):hname = models.CharField(max_length=20)#英雄姓名hgender = models.BooleanField(default=True)#英雄性別isDelete = models.BooleanField(default=False)#邏輯刪除#hcomment = models.CharField(max_length=200)#英雄描述信息hcomment = models.CharField(max_length=200, null=True, blank=False) #hcomment對應的數據庫中的字段可以為空,但通過后臺管理頁面添加英雄信息時hcomment對應的輸入框不能為空hbook = models.ForeignKey('BookInfo')#英雄與圖書表的關系為一對多,所以屬性定義在英雄模型類中

然后生成遷移文件并執行遷移命令,最后查看test2數據庫中的內容。

總結

以上是生活随笔為你收集整理的Django中模型类 属性-学习笔记的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。