python-django-Model(基本結構)
阿新 • • 發佈:2018-09-05
query error dex 根據 沒有 proto ive 錯誤 add
django為使用一種新的方式,即:關系對象映射(Object Relational Mapping,簡稱ORM)。
django中遵循 Code Frist 的原則,即:根據代碼中定義的類來自動生成數據庫表。
基本字段:
1 AutoFiled(Filed) int自增列 必須填入參數 primary_key=True
2
3 BigAutoField(AutoField) bigint自增列 必須填入參數 primary_key=True
4
5 當model中如果沒有自增列,則自動會創建一個列名為id的列
6
7 SmallIntegerField(IntegerField) 小整數 -32768~32767
8
9 PositiveSmallIntegerField(PositiveIntegerRelDbTypeMixin,IntegerField) 正小整數 0~32767
10
11 IntegerField(Field) 整數列(有符號的) -2147483648~2147483647
12
13 PositiveIntegerField(PositiveIntegerRelDbTypeMixin,IntegerField) 正整數 0~2147483647
14
15 BigIntegerField(IntegerField)長整形(有符號的)-922337036854775808~9223372036854775807
16
17 BooleanField(Field) 布爾值類型
18
19 NullBooleanField(Field) 可以為空的布爾值
20
21 CharField(Field) 字符類型
22
23 TextField(Field) 文本類型
24
25 EmailField(CharField) 字符串類型 django admin 以及ModelForm中提供驗證機制
26
27 IPAddressField(Field) 字符串類型 django admin 以及ModelForm中提供驗證IPV4機制
28
29 GenericIPAddressField(Field) 字符串類型 django admin 以及ModelForm中提供驗證IPV4和IPV6 參數:protocol,用於指定ipv4或ipv6:‘ both‘,‘ipv4‘,‘ipv6‘
30
31 URLField(CharField) 字符串類型 django admin 以及ModelForm中提供驗證URL
32
33 SlugField(CharField) 字符串類型 django admin 以及ModelForm中提供驗證 支持字母數字下劃線連接符(減號)
34
35 ‘CommaSeparatedIntegerField‘: ‘varchar(%(max_length)s)‘, 必須由逗號分開的整數,必須有max_length參數
36
37 UUIDField(Field) 字符串類型,Django Admin以及ModelForm中提供對UUID格式的驗證
38
39 FilePathField(Field) 字符串,Django Admin以及ModelForm中提供讀取文件夾下文件的功能 參數:
40 path, 文件夾路徑
41 match=None, 正則匹配
42 recursive=False, 遞歸下面的文件夾
43 allow_files=True, 允許文件
44 allow_folders=False, 允許文件夾
45
46 FileField(Field) 字符串,路徑保存在數據庫,文件上傳到指定目錄
47 - 參數:
48 upload_to = "" 上傳文件的保存路徑
49 storage = None 存儲組件,默認django.core.files.storage.FileSystemStorage
50
51 ImageField(FileField) 字符串,路徑保存在數據庫,文件上傳到指定目錄
52 - 參數:
53 upload_to = "" 上傳文件的保存路徑
54 storage = None 存儲組件,默認django.core.files.storage.FileSystemStorage
55 width_field=None, 上傳圖片的高度保存的數據庫字段名(字符串)
56 height_field=None 上傳圖片的寬度保存的數據庫字段名(字符串)
57
58 DateTimeField(DateField) 日期+時間格式 YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]
59
60 DateField(DateTimeCheckMixin,Field) 日期格式 YYYY-MM-DD
61
62 TimeField(DateTimeCheckMixin,Field) 時間格式 HH:MM[:ss[.uuuuuu]]
63
64
65 FloatField(Field) 浮點型
66 DecimalField(Field) 10進制小數
67 參數:
68 max_digits,小數總長度
69 decimal_places,小數位長度
70
71 ‘BinaryField‘: ‘longblob‘,存儲二進制數據,不能使用filter函數獲得QuerySet
返回值為字段在數據庫中的屬性,Django字段默認的值為:
1 ‘AutoField‘: ‘integer AUTO_INCREMENT‘,
2 ‘BigAutoField‘: ‘bigint AUTO_INCREMENT‘,
3 ‘BinaryField‘: ‘longblob‘,
4 ‘BooleanField‘: ‘bool‘,
5 ‘CharField‘: ‘varchar(%(max_length)s)‘,
6 ‘CommaSeparatedIntegerField‘: ‘varchar(%(max_length)s)‘,
7 ‘DateField‘: ‘date‘,
8 ‘DateTimeField‘: ‘datetime‘,
9 ‘DecimalField‘: ‘numeric(%(max_digits)s, %(decimal_places)s)‘,
10 ‘DurationField‘: ‘bigint‘,
11 ‘FileField‘: ‘varchar(%(max_length)s)‘,
12 ‘FilePathField‘: ‘varchar(%(max_length)s)‘,
13 ‘FloatField‘: ‘double precision‘,
14 ‘IntegerField‘: ‘integer‘,
15 ‘BigIntegerField‘: ‘bigint‘,
16 ‘IPAddressField‘: ‘char(15)‘,
17 ‘GenericIPAddressField‘: ‘char(39)‘,
18 ‘NullBooleanField‘: ‘bool‘,
19 ‘OneToOneField‘: ‘integer‘,
20 ‘PositiveIntegerField‘: ‘integer UNSIGNED‘,
21 ‘PositiveSmallIntegerField‘: ‘smallint UNSIGNED‘,
22 ‘SlugField‘: ‘varchar(%(max_length)s)‘,
23 ‘SmallIntegerField‘: ‘smallint‘,
24 ‘TextField‘: ‘longtext‘,
25 ‘TimeField‘: ‘time‘,
26 ‘UUIDField‘: ‘char(32)‘,
字段參數:
1 null 數據庫中字段是否可以為空 2 db_column 數據庫中字段的列名 3 db_tablespace 4 default 數據庫中字段的默認值 5 primary_key 數據庫中字段是否為主鍵 6 db_index 數據庫中字段是否可以建立索引 7 unique 數據庫中字段是否可以建立唯一索引 8 unique_for_date 數據庫中字段【日期】部分是否可以建立唯一索引 9 unique_for_month 數據庫中字段【月】部分是否可以建立唯一索引 10 unique_for_year 數據庫中字段【年】部分是否可以建立唯一索引 11 12 django admin 13 verbose_name Admin中顯示的字段名稱 14 blank Admin中是否允許用戶輸入為空 15 editable Admin中是否可以編輯 16 help_text Admin中該字段的提示信息 17 choices Admin中顯示選擇框的內容,用不變動的數據放在內存中從而避免跨表操作 18 如:gf = models.IntegerField(choices=[(0, ‘哈哈‘),(1, ‘啦啦啦‘),],default=1) 19 django 20 error_messages 自定義錯誤信息(字典類型),從而定制想要顯示的錯誤信息; 21 字典健:null, blank, invalid, invalid_choice, unique, and unique_for_date 22 如:{‘null‘: "不能為空.", ‘invalid‘: ‘格式錯誤‘} 23 24 validators 自定義錯誤驗證(列表類型),從而定制想要的驗證規則 25 from django.core.validators import RegexValidator 26 from django.core.validators import EmailValidator,URLValidator,DecimalValidator,27 MaxLengthValidator,MinLengthValidator,MaxValueValidator,MinValueValidator 28 如: 29 test = models.CharField( 30 max_length=32, 31 error_messages={ 32 ‘c1‘: ‘優先錯信息1‘, 33 ‘c2‘: ‘優先錯信息2‘, 34 ‘c3‘: ‘優先錯信息3‘, 35 }, 36 validators=[ 37 RegexValidator(regex=‘root_\d+‘, message=‘錯誤了‘, code=‘c1‘), 38 RegexValidator(regex=‘root_112233\d+‘, message=‘又錯誤了‘, code=‘c2‘), 39 EmailValidator(message=‘又錯誤了‘, code=‘c3‘), ]
python-django-Model(基本結構)