亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Django之ORM常用字段和參數有哪些

發布時間:2020-10-26 11:01:22 來源:億速云 閱讀:135 作者:小新 欄目:編程語言

這篇文章給大家分享的是有關Django之ORM常用字段和參數有哪些的內容。小編覺得挺實用的,因此分享給大家做個參考。一起跟隨小編過來看看吧。

Django ORM 常用字段和參數:

1.常用字段:

#AutoField

int自增列,必須填入參數primary_key = True,當model中如果沒有自增列,則會自動創建一個列名為id的列。

#IntegerField

一個整數類型,范圍在--2147483648 to 2147483647。(一般不用它來存手機號(位數也不夠),直接用字符串存)

#CharField

字符類型,必須提供max_length參數,max_length表示字符長度。

Tips:Django的CharField對應的MySQL數據庫中的varchar類型,沒有設置對應char類型的字段,但是Django允許我們自定義新的字段,下面我來自定義對應于數據庫的char類型。

Django之ORM常用字段和參數有哪些

#應用上面自定義的char類型
class Class(models.Model):
    id=models.AutoField(primary_key=True)
    title=models.CharField(max_length=32)
    class_name=RealCharField(max_length=16)
    gender_choice=((1,'男'),(2,'女'),(3,'保密'))
    gender=models.SmallIntegerField(choices=gender_choice,default=3)

需要注意的是:自定義字段在實際項目應用中可能會經常用到,所以這里需要留意。
#DateField
日期字段,日期格式 YYYY-MM-MD,例如:2019-6-12,相當于Python中的datetime.date()實例。
#DateTimeField 
日期格式字段,格式 YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ],相當于Python中的datetime.datetime()實例。


2.字段合集:

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)
    - 二進制類型
對應關系:
    'AutoField': 'integer AUTO_INCREMENT',
    'BigAutoField': 'bigint AUTO_INCREMENT',
    'BinaryField': 'longblob',
    'BooleanField': 'bool',
    'CharField': 'varchar(%(max_length)s)',
    'CommaSeparatedIntegerField': 'varchar(%(max_length)s)',
    'DateField': 'date',
    'DateTimeField': 'datetime',
    'DecimalField': 'numeric(%(max_digits)s, %(decimal_places)s)',
    'DurationField': 'bigint',
    'FileField': 'varchar(%(max_length)s)',
    'FilePathField': 'varchar(%(max_length)s)',
    'FloatField': 'double precision',
    'IntegerField': 'integer',
    'BigIntegerField': 'bigint',
    'IPAddressField': 'char(15)',
    'GenericIPAddressField': 'char(39)',
    'NullBooleanField': 'bool',
    'OneToOneField': 'integer',
    'PositiveIntegerField': 'integer UNSIGNED',
    'PositiveSmallIntegerField': 'smallint UNSIGNED',
    'SlugField': 'varchar(%(max_length)s)',
    'SmallIntegerField': 'smallint',
    'TextField': 'longtext',
    'TimeField': 'time',
    'UUIDField': 'char(32)',

3.字段參數:

#null :用于表示某個字段可以為空

#unique :如果設置為unique = True 則該字段在此表中必須是唯一的

# db_index :如果db_index = True 則代表著為此字段設置索引

# default :為該字段設置默認值

4.DateField和DateTimeField:

#auto_now_add

配置auto_now_add = True,創建數據記錄的時候會把當前時間添加到數據庫,后續操作數據不自動更新

#auto_now

配置上auto_now = True,每次更新數據記錄的時候會更新該字段

5.關系字段:

#①ForeignKey

外鍵類型在ORM中用表示外鍵關聯關系,一般吧ForeignKey字段設置在‘一段多’中的多的一方,ForeignKey可以和其它表做關聯關系同時也可以和自身做關聯關系。

#字段參數:

##to    設置要關聯的表

##to_field    設置要關聯的表的字段

##on_delete    當刪除關聯表中的數據時,當前表與其關聯的行的行為

models.CASCADE (Django2.x版本必須要設置,1.x版本默認就設置了)

刪除關聯數據,與之關聯也刪除

##db_constraint    是否在數據庫中創建外鍵約束,默認為True

models.DO_NOTHING
刪除關聯數據,引發錯誤IntegrityError
models.PROTECT
刪除關聯數據,引發錯誤ProtectedError
models.SET_NULL
刪除關聯數據,與之關聯的值設置為null(前提FK字段需要設置為可空)
models.SET_DEFAULT
刪除關聯數據,與之關聯的值設置為默認值(前提FK字段需要設置默認值)
models.SET
刪除關聯數據,
a. 與之關聯的值設置為指定值,設置:models.SET(值)
b. 與之關聯的值設置為可執行對象的返回值,設置:models.SET(可執行對象)

示例:

def func():
    return 10
class MyModel(models.Model):
    user = models.ForeignKey(
        to="User",
        to_field="id",  # 不寫默認關聯對方關聯表的primary_key
        on_delete=models.SET(func)
    )

#②OneToOneField

一對一字段

通常一對一字段用來擴展已有字段。(通俗的說就是一個人的所有信息不是放在一張表里面的,簡單的信息一張表,隱私的信息另一張表,之間通過一對一外鍵關聯)

#字段參數:

##to    設置要關聯的表

##to_field    設置要關聯的表的字段

##on_delete    當刪除關聯表中的數據時,當前與其關聯的行的行為(參考ForeignKey)

#③ManyToManyField

多對多字段

#字段參數:

##to    設置要關聯的表

##to_field    設置要關聯的表的字段

##on_delete    當刪除關聯表中的數據時,當前與其關聯的行的行為

感謝各位的閱讀!關于Django之ORM常用字段和參數有哪些就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

峡江县| 布尔津县| 拉孜县| 田东县| 河东区| 新巴尔虎右旗| 桐柏县| 珲春市| 常宁市| 十堰市| 商河县| 孟村| 安陆市| 海城市| 武隆县| 灵寿县| 湘潭市| 隆回县| 宝兴县| 保亭| 晋中市| 朔州市| 武川县| 东城区| 舒兰市| 杭锦旗| 庆阳市| 姚安县| 铅山县| 上虞市| 临城县| 大方县| 石阡县| 昔阳县| 全州县| 固镇县| 阜新| 汶上县| 麦盖提县| 布拖县| 综艺|