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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

Django层级模型定义及序列化嵌套的方法

發(fā)布時間:2025/4/9 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Django层级模型定义及序列化嵌套的方法 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

----------Django==2.0.2-----------

?

一、Django層級模型的定義

實例:(商品模型)

?

class GoodsCategory(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="類目級別")# 設(shè)置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("是否導(dǎo)航",default=False,help_text="是否導(dǎo)航")add_time = models.DateTimeField("添加時間",default=datetime.now)class Meta:verbose_name = "商品類別"verbose_name_plural = verbose_namedef __str__(self):return self.name

注意

1、外鍵關(guān)聯(lián)自己,關(guān)聯(lián)模型必須是self,不能是模型名,否側(cè)會報錯

  ?如:parent_category = models.ForeignKey("self", on_delete=models.CASCADE, null=True, blank=True, verbose_name="父類目級別", help_text="父目錄",related_name="sub_cat")

2、指定 related_name = ''? ,用于關(guān)聯(lián)對象反向引用模型的名稱(如序列化嵌套要用到)

二、Django序列化嵌套操作

class CategorySerializer3(serializers.ModelSerializer):'''三級分類'''class Meta:model = GoodsCategoryfields = ['name','code','desc','category_type','parent_category','is_tab','add_time'] # class CategorySerializer2(serializers.ModelSerializer):'''二級分類'''sub_cat = CategorySerializer3(many=True)class Meta:model = GoodsCategoryfields = ['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 = GoodsCategoryfields = ['name','code','desc','category_type','parent_category','is_tab','add_time','sub_cat']

注意:

1、序列化模型中最后一個分類要放在最前面定義

2、注意嵌套的時候一定要指定之前related_name里面的值,如:?'parent_category'? 中的? related_name的值? ‘sub_cat’

3、另外除了最內(nèi)層的字段不需要指定sub_cat字段,其他的序列化模型中必須指定sub_cat字段,另外fields中必須包含'sub_cat',否則會報錯。

?

轉(zhuǎn)載于:https://www.cnblogs.com/airapple/p/9237699.html

總結(jié)

以上是生活随笔為你收集整理的Django层级模型定义及序列化嵌套的方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。