1. 程式人生 > >Django 資料操作之欄位與引數

Django 資料操作之欄位與引數

Field

點選這裡檢視Github,記得關注哦!

資料操作欄位與其引數

欄位

所有欄位型別:

AutoField(Field)

int 自增列,必須填入引數 primary_key=True

BigAutoField(AutoField)

bigint 自增列,必須填入引數 primary_key=True

注:當model中如果沒有自增列,則自動會建立一個列名為 id 的列

from django.db import models

class UserInfo(models.Model):

# 自動建立一個列名為id的且為自增的整數列

username = models.CharField(max_length=32)

class Group(models.Model):

# 自定義自增列

nid = models.AutoField(primary_key=True)

name = models.CharField(max_length=32)

SmallIntegerField(IntegerField):

小整數 -32768 ~ 32767

PositiveSmallIntegerField(PositiveIntegerRelDbTypeMixin, IntegerField)

正小整數 0 ~ 32767

IntegerField(Field)

整數列(有符號的) -2147483648 ~ 2147483647

PositiveIntegerField(PositiveIntegerRelDbTypeMixin, IntegerField)

正整數 0 ~ 2147483647

BigIntegerField(IntegerField):

長整型(有符號的) -9223372036854775808 ~ 9223372036854775807

BooleanField(Field)

布林值型別

NullBooleanField(Field):

可以為空的布林值

CharField(Field)

字元型別

必須提供 max_length 引數, max_length 表示字元長度

TextField(Field)

文字型別

EmailField(CharField):

字串型別,Django Admin 以及 ModelForm 中提供驗證機制

IPAddressField(Field)

字串型別,Django Admin 以及 ModelForm 中提供驗證 IPV4 機制

GenericIPAddressField(Field)

字串型別,Django Admin以及ModelForm中提供驗證 Ipv4和Ipv6

引數:

protocol:用於指定 Ipv4 或 Ipv6, ‘both’,“ipv4”,“ipv6”

unpack_ipv4:如果指定為 True,則輸入::ffff:192.0.2.1 時候,可解析為 192.0.2.1,開啟此功能,需要protocol=“both”

URLField(CharField)

字串型別,Django Admin 以及 ModelForm 中提供驗證 URL

SlugField(CharField)

字串型別,Django Admin 以及 ModelForm 中提供驗證支援 字母、數字、下劃線、連線符(減號)

CommaSeparatedIntegerField(CharField)

字串型別,格式必須為逗號分割的數字

UUIDField(Field)

字串型別,Django Admin 以及 ModelForm 中提供對 UUID 格式的驗證

FilePathField(Field)

字串,Django Admin 以及 ModelForm 中提供讀取資料夾下檔案的功能

引數:

- path:資料夾路徑

- match=None:正則匹配

- recursive=False:遞迴下面的資料夾

- allow_files=True:允許檔案

- allow_folders=False:允許資料夾

FileField(Field)

字串,路徑儲存在資料庫,檔案上傳到指定目錄

引數:

upload_to = “”:上傳檔案的儲存路徑

storage = None:儲存元件,預設 django.core.files.storage.FileSystemStorage

ImageField(FileField)

字串,路徑儲存在資料庫,檔案上傳到指定目錄

引數:

upload_to = “”:上傳檔案的儲存路徑

storage = None:儲存元件,預設 django.core.files.storage.FileSystemStorage

width_field=None:上傳圖片的高度儲存的資料庫欄位名(字串)

height_field=None:上傳圖片的寬度儲存的資料庫欄位名(字串)

DateTimeField(DateField)

日期+時間格式:YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]

DateField(DateTimeCheckMixin, Field)

日期格式:YYYY-MM-DD

TimeField(DateTimeCheckMixin, Field)

時間格式:HH:MM[:ss[.uuuuuu]]

DurationField(Field)

長整數,時間間隔,資料庫中按照 bigint 儲存,ORM 中獲取的值為 datetime.timedelta 型別

FloatField(Field)

浮點型

DecimalField(Field)

10進位制小數

引數:

max_digits:小數總長度

decimal_places:小數位長度

BinaryField(Field)

二進位制型別

注意: 這些操作,如果是直接用資料庫操作語句進行新增的話,不會有報錯或是警告之類的資訊,但是如果換到後臺管理頁面上,進行新增則會有相應的警告!

欄位引數

通用引數

null=True:該欄位可以為空

default=‘1111’:預設值為1111

db_index=True:模型欄位設定索引

unique=True:欄位唯一

max_length=xxx:表示字元長度

primary_key= True:設定主鍵

class Meta: # 用於建立多列間的組合操作

unique_together = ( #建立有關聯的聯合唯一索引

(‘email’,‘ctime’),

)

index_together = ( #建立普通的索引

(‘email’,‘ctime’),

)

Django Admin 引數:

verbose_name:Admin 中顯示的欄位名稱

blank:Admin 中是否允許使用者輸入為空

editable:Admin 中是否可以編輯

help_text:Admin 中該欄位的提示資訊

choices:Admin 中顯示選擇框的內容,用不變動的資料放在記憶體中從而避免跨表操作,如:gf = models.IntegerField(choices=[(0, ‘小學’), (1, ‘中學’),], default=1)

error_messages:自定義錯誤資訊(字典型別),從而定製想要顯示的錯誤資訊;字典健:null, blank, invalid, invalid_choice, unique, and unique_for_date,如:{‘null’: “不能為空.”, ‘invalid’: ‘格式錯誤’}

validators:自定義錯誤驗證(列表型別),從而定製想要的驗證規則

關聯欄位

OneToOneField:一對一:

class_obj = models.ForeignKey(verbose_name=“班級”, to=“ClassList”)

ForeignKey:一對多:

customer = models.OneToOneField(verbose_name=‘客戶資訊’, to=‘Customer’)

ManyToManyField:多對多:

teachers = models.ManyToManyField(verbose_name=‘任課老師’, to=‘UserInfo’, related_name=‘teach_classes’,limit_choices_to={“department_id__in”: [1003, 1004, 1005]})

瀋陽好的婦科醫院:http://yyk.39.net/tl1/zonghe/dd5f0.html

瀋陽婦科醫院哪家好:http://yyk.39.net/dl/zonghe/dd5f0.html