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