----------django==2.0.2-----------
一、django層級模型的定義
例項:(商品模型)
classgoodscategory(models.model):
"""商品分類
"""category_type =(
(1, "
一級類目"),
(2, "
二級類目"),
(3, "
**類目"),
)name = models.charfield('
類別名',default="", max_length=30,help_text="
類別名"
) code = models.charfield("
類別code
",default="", max_length=30,help_text="
類別code")
desc = models.textfield("
類別描述
",default="",help_text="
類別描述")
#目錄樹級別
category_type = models.integerfield("
類目級別
",choices=category_type,help_text="
類目級別")
#設定models有乙個指向自己的外來鍵
parent_category = models.foreignkey("
self
", on_delete=models.cascade, null=true, blank=true, verbose_name="
父類目級別
", help_text="
父目錄",related_name="
sub_cat")
is_tab = models.booleanfield("
是否導航
",default=false,help_text="
是否導航")
add_time = models.datetimefield("
新增時間
",default=datetime.now)
class
meta:
verbose_name = "
商品類別
"verbose_name_plural =verbose_name
def__str__
(self):
return self.name
注意1、外來鍵關聯自己,關聯模型必須是self,不能是模型名,否側會報錯
如:parent_category = models.foreignkey("self", on_delete=models.cascade, null=true, blank=true, verbose_name="父類目級別", help_text="父目錄",related_name="sub_cat")
2、指定 related_name = '' ,用於關聯物件反向引用模型的名稱(如序列化巢狀要用到)
二、django序列化巢狀操作
classcategoryserializer3(serializers.modelserializer):
'''**分類
'''class
meta:
model =goodscategory
fields = ['
name
','code
','desc
','category_type
','parent_category
','is_tab
','add_time']
#class
categoryserializer2(serializers.modelserializer):
'''二級分類
'''sub_cat = categoryserializer3(many=true)
class
meta:
model =goodscategory
fields = ['
name
','code
','desc
','category_type
','parent_category
','is_tab
','add_time
','sub_cat']
class
categoryserializer(serializers.modelserializer):
'''商品一級分類
'''sub_cat= categoryserializer2(many=true)
class
meta:
model =goodscategory
fields = ['
name
','code
','desc
','category_type
','parent_category
','is_tab
','add_time
','sub_cat
']
注意:1、序列化模型中最後乙個分類要放在最前面定義
2、注意巢狀的時候一定要指定之前related_name裡面的值,如: 'parent_category' 中的 related_name的值 『sub_cat』
3、另外除了最內層的字段不需要指定sub_cat欄位,其他的序列化模型中必須指定sub_cat欄位,另外fields中必須包含'sub_cat',否則會報錯。
django 定義模型
字段型別 字段選項 關係可以維護遞迴的關聯關係,使用 self 指定,詳見 自關聯 用一訪問多 物件.模型類小寫 set bookinfo.heroinfo set用一訪問一 物件.模型類小寫 heroinfo.bookinfo訪問id 物件.屬性 id heroinfo.book id class...
Django模型類定義
資料庫表名 可通過db table指明資料庫表名。關於主鍵 django會為表建立自動增長的主鍵列,每個模型只能有乙個主鍵列,如果使用選項設定某屬性為主鍵列後django不會再建立自動增長的主鍵列。預設建立的主鍵列屬性為id,可以使用pk代替,pk全拼為primary key。屬性命名限制 字段型別...
Django定義和使用模型
學習動力 我今年的專案主要基於django開發,學習了很多新東西。我很多時候,擔心日後會忘記很多有趣的東西,我想寫下筆記。但是從哪個方面入手,我沒有思路。所以檢視了一些書,根據目錄進行總結。希望自己不會錯過什麼!定義模型 為什麼使用orm django豐富的變數型別 為了簡單,我直接編寫和官網一樣的...