深入Django(2) 自定義ORM

2022-04-01 15:17:33 字數 1062 閱讀 8790

django的model使用orm來運算元據庫,通常我們只需關注model類本身,django自己會處理到資料庫的對映。但凡事總有例外,有時需要改變預設的對映行為。django對此也提供了豐富的支援。

1. 自定義欄位名

預設的欄位名與屬性名相同,可以通過欄位的db_column屬性自定義,如

where = models.charfield(max_length=400, db_column='place')

2. 自定義索引

除了id欄位,其他字段預設不建立索引,可以通過欄位的db_index屬性自定義,如

publish_date= models.datefield(db_index=true)

3. 自定義id

如果不指定id,預設建立乙個型別為integerfield的id欄位,可以通過欄位的primary_key屬性指定自己的id欄位。如:

key = models.integerfield(primary_key=true)

4. 自定義表名

5. 自定義表空間

對於索引字段,預設在settings的default_index_tablespace設定的表空間中建立索引,可以通過欄位的db_tablespace屬性指定,如

publish_date= models.datefield(db_index=true,db_tablespace='another_tbs')

對於model類,通過meta中的db_tablespace屬性指定特定的表空間。

6. 自定義關聯關係

1)外來鍵預設關聯到對方的主鍵字段,可以通過外來鍵的to_field指定關聯到的字段,如

to_model = models.foreighkey(tomodel,to_field='key')

2)對於many-to-many關聯,django會建立乙個關聯表,預設表名是兩個表名通過下劃線連線起來。可以通過manytomanyfield的db_table指定關聯表的表名。      3)對於many-to-many關聯,如果不想使用django建立的關聯表,可以通過manytomanyfield的through屬性指定到乙個已存在的model類。

深入Django(2) 自定義ORM

django的model使用orm來運算元據庫,通常我們只需關注model類本身,django自己會處理到資料庫的對映。但凡事總有例外,有時需要改變預設的對映行為。django對此也提供了豐富的支援。1.自定義欄位名 預設的欄位名與屬性名相同,可以通過欄位的db column屬性自定義,如 wher...

深入django 自定義ORM

django的model使用orm來運算元據庫,通常我們只需關注model類本身,django自己會處理到資料庫的對映。但凡事總有例外,有時需要改變預設的對映行為。django對此也提供了豐富的支援。1.自定義欄位名 預設的欄位名與屬性名相同,可以通過欄位的db column屬性自定義,如 wher...

django中自定義orm,修改預設規則

django的model使用orm來運算元據庫,通常我們只需關注model類本身,django自己會處理到資料庫的對映。但凡事總有例外,有時需要改變預設的對映行為。django對此也提供了豐富的支援。1.自定義欄位名 預設的欄位名與屬性名相同,可以通過欄位的db column屬性自定義,如 wher...