字段
對字段名稱的限制git
- 字段名不能是Python的保留字,不然會致使語法錯誤
- 字段名不能有多個連續下劃線,不然影響ORM查詢操做
Django模型字段類github
字段類 | 說明 |
---|---|
AutoField | 自增ID字段 |
BigIntegerField | 64位有符號整數 |
BinaryField | 存儲二進制數據的字段,對應Python的bytes類型 |
BooleanField | 存儲True或False |
CharField | 長度較小的字符串 |
DateField | 存儲日期,有auto_now和auto_now_add屬性 |
DateTimeField | 存儲日期和日期,兩個附加屬性同上 |
DecimalField | 存儲固定精度小數,有max_digits(有效位數)和decimal_places(小數點後面)兩個必要的參數 |
DurationField | 存儲時間跨度 |
EmailField | 與CharField相同,能夠用EmailValidator驗證 |
FileField | 文件上傳字段 |
FloatField | 存儲浮點數 |
ImageField | 其餘同FileFiled,要驗證上傳的是否是有效圖像 |
IntegerField | 存儲32位有符號整數。 |
GenericIPAddressField | 存儲IPv4或IPv6地址 |
NullBooleanField | 存儲True、False或null值 |
PositiveIntegerField | 存儲無符號整數(只能存儲正數) |
SlugField | 存儲slug(簡短標註) |
SmallIntegerField | 存儲16位有符號整數 |
TextField | 存儲數據量較大的文本 |
TimeField | 存儲時間 |
URLField | 存儲URL的CharField |
UUIDField | 存儲全局惟一標識符 |
字段屬性
通用字段屬性正則表達式
選項 | 說明 |
---|---|
null | 數據庫中對應的字段是否容許爲NULL,默認爲False |
blank | 後臺模型管理驗證數據時,是否容許爲NULL,默認爲False |
choices | 設定字段的選項,各元組中的第一個值是設置在模型上的值,第二值是人類可讀的值 |
db_column | 字段對應到數據庫表中的列名,未指定時直接使用字段的名稱 |
db_index | 設置爲True時將在該字段建立索引 |
db_tablespace | 爲有索引的字段設置使用的表空間,默認爲DEFAULT_INDEX_TABLESPACE |
default | 字段的默認值 |
editable | 字段在後臺模型管理或ModelForm中是否顯示,默認爲True |
error_messages | 設定字段拋出異常時的默認消息的字典,其中的鍵包括null、blank、invalid、invalid_choice、unique和unique_for_date |
help_text | 表單小組件旁邊顯示的額外的幫助文本。 |
primary_key | 將字段指定爲模型的主鍵,未指定時會自動添加AutoField用於主鍵,只讀。 |
unique | 設置爲True時,表中字段的值必須是惟一的 |
verbose_name | 字段在後臺模型管理顯示的名稱,未指定時使用字段的名稱 |
ForeignKey屬性數據庫
- limit_choices_to:值是一個Q對象或返回一個Q對象,用於限制後臺顯示哪些對象。
- related_name:用於獲取關聯對象的關聯管理器對象(反向查詢),若是不容許反向,該屬性應該被設置爲
'+'
,或者以'+'
結尾。 - to_field:指定關聯的字段,默認關聯對象的主鍵字段。
- db_constraint:是否爲外鍵建立約束,默認值爲True。
- on_delete:外鍵關聯的對象被刪除時對應的動做,可取的值包括django.db.models中定義的:
- CASCADE:級聯刪除。
- PROTECT:拋出ProtectedError異常,阻止刪除引用的對象。
- SET_NULL:把外鍵設置爲null,當null屬性被設置爲True時才能這麼作。
- SET_DEFAULT:把外鍵設置爲默認值,提供了默認值才能這麼作。
ManyToManyField屬性django
- symmetrical:是否創建對稱的多對多關係。
- through:指定維持多對多關係的中間表的Django模型。
- throughfields:定義了中間模型時能夠指定創建多對多關係的字段。
- db_table:指定維持多對多關係的中間表的表名。
模型元數據選項
選項 | 說明 |
---|---|
abstract | 設置爲True時模型是抽象父類 |
app_label | 若是定義模型的應用不在INSTALLED_APPS中能夠用該屬性指定 |
db_table | 模型使用的數據表名稱 |
db_tablespace | 模型使用的數據表空間 |
default_related_name | 關聯對象回指這個模型時默認使用的名稱,默認爲<model_name>_set |
get_latest_by | 模型中可排序字段的名稱。 |
managed | 設置爲True時,Django在遷移中建立數據表並在執行flush管理命令時把表移除 |
order_with_respect_to | 標記對象爲可排序的 |
ordering | 對象的默認排序 |
permissions | 建立對象時寫入權限表的額外權限 |
default_permissions | 默認爲('add', 'change', 'delete') |
unique_together | 設定組合在一塊兒時必須獨一無二的字段名 |
index_together | 設定一塊兒創建索引的多個字段名 |
verbose_name | 爲對象設定人類可讀的名稱 |
verbose_name_plural | 設定對象的複數名稱 |
查詢參考
按字段查找能夠用的條件:app
- exact / iexact:精確匹配/忽略大小寫的精確匹配查詢
- contains / icontains / startswith / istartswith / endswith / iendswith:基於
like
的模糊查詢 - in:集合運算
- gt / gte / lt / lte:大於/大於等於/小於/小於等於關係運算
- range:指定範圍查詢(SQL中的
between…and…
) - year / month / day / week_day / hour / minute / second:查詢時間日期
- isnull:查詢空值(True)或非空值(False)
- search:基於全文索引的全文檢索
- regex / iregex:基於正則表達式的模糊匹配查詢