1. 程式人生 > >django之常用欄位和引數

django之常用欄位和引數

一,ORM欄位

  1. AutoField:int自增列,必須填入引數 primary_key=True。當model中如果沒有自增列,則自動會建立一個列名為id的列。
  2. IntegerField:一個整數型別,範圍在 -2147483648 to 2147483647。

  3. CharField:字元型別,必須提供max_length引數, max_length表示字元長度。

  4. DateField:日期欄位,日期格式  YYYY-MM-DD,相當於Python中的datetime.date()例項。

  5. DateTimeField:期時間欄位,格式 YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ],相當於Python中的datetime.datetime()例項

二,ORM欄位引數

  1. null:用於表示某個欄位可以為空。

  2. unique:如果設定為unique=True 則該欄位在此表中必須是唯一的 

  3. db_index

    如果db_index=True 則代表著為此欄位設定索引。

  4. default

    為該欄位設定預設值。

 DateField和DateTimeField的引數:

auto_now_add:

配置auto_now_add=True,建立資料記錄的時候會把當前時間新增到資料庫。

auto_now:

配置上auto_now=True,每次更新資料記錄的時候會更新該欄位。

三,關係欄位

ForeignKey:
            -to  關聯哪個表
            -to_field 關聯的欄位
            -related_name 反向操作時,使用的欄位名,用於代替原反向查詢時的'表名_set'。(一般不要用)
            -related_query_name :基於雙下劃線的反向查詢之前按表名小寫(一般不要用)
            -on_delete:models.CASCADE,models.SET_NULL
            -db_constraint:db_constraint=False代表,不做外來鍵關聯(是否在資料庫中建立外來鍵約束)

其中on_delete屬性:當刪除關聯表中的資料時,當前表與其關聯的行的行為。

  models.CASCADE
  刪除關聯資料,與之關聯也刪除


  models.DO_NOTHING
  刪除關聯資料,引發錯誤IntegrityError


  models.PROTECT
  刪除關聯資料,引發錯誤ProtectedError


  models.SET_NULL
  刪除關聯資料,與之關聯的值設定為null(前提FK欄位需要設定為可空)


  models.SET_DEFAULT
  刪除關聯資料,與之關聯的值設定為預設值(前提FK欄位需要設定預設值)


  models.SET

  刪除關聯資料,
  a. 與之關聯的值設定為指定值,設定:models.SET(值)
  b. 與之關聯的值設定為可執行物件的返回值,設定:models.SET(可執行物件)

OneToOneField:

to

設定要關聯的表。

to_field

設定要關聯的欄位。

on_delete

同ForeignKey欄位。

ManyToManyField:

用於表示多對多的關聯關係。在資料庫中通過第三張表來建立關聯關係

to

設定要關聯的表

related_name

同ForeignKey欄位。

related_query_name

同ForeignKey欄位。

symmetrical

僅用於多對多自關聯時,指定內部是否建立反向操作的欄位。預設為True。

through

在使用ManyToManyField欄位時,Django將自動生成一張表來管理多對多的關聯關係。

through_fields

設定關聯的欄位。

db_table

預設建立第三張表時,資料庫中表的名稱