日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Django模型定义参考

發布時間:2023/11/30 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Django模型定义参考 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

字段

對字段名稱的限制

  • 字段名不能是Python的保留字,否則會導致語法錯誤
  • 字段名不能有多個連續下劃線,否則影響ORM查詢操作

Django模型字段類

字段類說明
AutoField自增ID字段
BigIntegerField64位有符號整數
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屬性

  • 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設定對象的復數名稱

    查詢參考

    按字段查找可以用的條件:

  • 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:基于正則表達式的模糊匹配查詢
  • 轉載于:https://www.cnblogs.com/virus1996/p/9370205.html

    總結

    以上是生活随笔為你收集整理的Django模型定义参考的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。