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...