django定义模型类-14
生活随笔
收集整理的這篇文章主要介紹了
django定义模型类-14
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
目錄
- 1. 定義
- 字段類型
- 約束類型
django的模型類定義在應用下的 models.py 文件中。
模型類繼承自 django.db.models 包下的 Model 類。
新創建應用 book ,我們將在此應用下做演示。
python manage.py startapp book1. 定義
以 ‘圖書-角色’為例創建模型類
from django.db import modelsclass Book(models.Model):b_title = models.CharField(max_length=20, verbose_name="標題")b_pub_date = models.DateField(verbose_name="發布日期")b_read = models.IntegerField(default=0, verbose_name="閱讀數")b_comment = models.IntegerField(default=0, verbose_name="評論數")is_delete = models.BooleanField(default=False, verbose_name="邏輯刪除")class Meta:db_table = "book"verbose_name = "書籍"verbose_name_plural = verbose_namedef __str__(self):return self.b_titleclass Role(models.Model):GENDER_CHOICES = ((0, 'female'),(1, 'male'))r_name = models.CharField(max_length=20, verbose_name="角色名稱")r_gender = models.SmallIntegerField(choices=GENDER_CHOICES, verbose_name="性別", default=0)r_describe = models.CharField(max_length=200, verbose_name="描述信息", null=True)r_book = models.ForeignKey(Book, on_delete=models.CASCADE, verbose_name="書籍")is_delete = models.BooleanField(default=False, verbose_name="邏輯刪除")class Meta:db_table = "role"verbose_name = "角色"verbose_name_plural = verbose_namedef __str__(self):return self.r_name- db_table 指定數據表名字,如果未指明,將會以小寫 應用名+模型類名 為數據表名字。
- verbose_name 指定在 admin 站點中顯示的名字
如果沒設置主鍵,django會自動生成一個自動增長的主鍵列。如果設置了主鍵,django不會再自動生成。
- 屬性命名限制
- 不能是python的保留關鍵字。
- 不允許使用連續的下劃線,這是由django的查詢方式決定的。
- 定義屬性時需要指定字段類型,通過字段類型的參數指定選項,語法如下:
定義模型類基本格式如下:
from django.db import modelsclass 類名(models.Model):字段名 = models.類型名(約束)class Meta:db_table = "表名"verbose_name = admin中顯示名字verbose_name_plural = admin中顯示名字復數字段類型
django-ORM的基本字段類型
1、models.AutoField 自增列 如果沒有的話,默認會生成一個名稱為 id 的列,如果要顯示的自定義一個自增列,必須將給列設置為主鍵 primary_key=True。2、models.CharField 字符串字段 必須 max_length 參數3、models.BooleanField 布爾類型 不能為空,Blank=True4、models.ComaSeparatedIntegerField 用逗號分割的數字=varchar繼承CharField,所以必須 max_lenght 參數5、models.DateField 日期類型 date對于參數,auto_now = True 則每次更新都會更新這個時間;auto_now_add 則只是第一次創建添加,之后的更新不再改變。6、models.DateTimeField 日期類型 datetime同DateField的參數7、models.Decimal 十進制小數類型 = decimal必須指定整數位max_digits和小數位decimal_places8、models.EmailField 字符串類型(郵箱格式)對字符串進行正則表達式驗證9、models.FloatField 浮點類型 = double10、models.IntegerField 整形11、 整形范圍integer_field_ranges = {'SmallIntegerField': (-32768, 32767),'IntegerField': (-2147483648, 2147483647),'BigIntegerField': (-9223372036854775808, 9223372036854775807),'PositiveSmallIntegerField': (0, 32767),'PositiveIntegerField': (0, 2147483647),}12、models.IPAddressField 字符串類型(ip4格式)13、models.GenericIPAddressField 字符串類型(ip4或ip6格式)參數protocol可以是:both、ipv4、ipv6驗證時,會根據設置報錯14、models.NullBooleanField 允許為空的布爾類型15、models.PositiveIntegerFiel 正Integer16、models.PositiveSmallIntegerField 正smallInteger17、models.SlugField 減號、下劃線、字母、數字18、models.SmallIntegerField 數字數據庫中的字段有:tinyint、smallint、int、bigint19、models.TextField 字符串=longtext20、models.TimeField 時間 HH:MM[:ss[.uuuuuu]]21、models.URLField 字符串,地址正則表達式22、models.BinaryField 二進制23、models.ImageField 圖片 在數據庫中保存的是文件的路徑24、models.FilePathField 文件約束類型
1、null=True數據庫中字段是否可以為空2、blank=Truedjango的 Admin 中添加數據時是否可允許空值3、primary_key = False主鍵,對AutoField設置主鍵后,就會代替原來的自增 id 列4、auto_now 和 auto_now_addauto_now 自動創建---無論添加或修改,都是當前操作的時間auto_now_add 自動創建---永遠是創建時的時間5、choices 枚舉GENDER_CHOICES = ((0, 'male'),(1, 'female'))r_gender = models.SmallIntegerField(choices=GENDER_CHOICES)6、max_length 最大長度7、default 默認值8、verbose_name Admin中字段的顯示名稱9、name|db_column 數據庫中的字段名稱10、unique=True 不允許重復11、db_index = True 數據庫索 引 12、editable=True 在Admin里是否可編輯13、error_messages=None 錯誤提示14、auto_created=False 自動創建15、help_text 在Admin中提示幫助信息16、validators=[]17、upload-to 上傳路徑轉載于:https://www.cnblogs.com/mxuanli/p/9871240.html
總結
以上是生活随笔為你收集整理的django定义模型类-14的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 在Myeclipse中没有部署jeesi
- 下一篇: thymeleaf引入css js写法