从ManyToMany关系DRF获取序列化的祖父母

丹尼尔·克

我正在努力在模型中序列化ManyToMany关系的祖父母。在产品序列化程序中,我要Category根据上的SubCategory选择列出顶层Product我的代码结构如下:

models.py

class Category(models.Model):
    
    ...
    name = models.CharField(
        _('category name'), 
        max_length=255, 
        unique=False
    )
    ...

class SubCategory(models.Model):
    parent = models.ForeignKey(
        Category, 
        on_delete=models.CASCADE, 
        related_name='children', 
    )
    name = models.CharField(
        _('category name'), 
        max_length=255, 
        unique=False
    )
    ...

class Product(models.Model):

    name = models.CharField(
        _('product name'),
        max_length=255,
        unique=True
    )
    category = models.ManyToManyField(
        SubCategory,
        related_name='products'
    )
    ...

serializers.py

class CategorySerializer(serializers.ModelSerializer):
    
    class Meta:
        model = Category
        fields = ['name']


class ProductsSerializer(serializers.ModelSerializer):

    ...
    category = serializers.StringRelatedField(read_only=True, many=True)
    parent_category = CategorySerializer(read_only=True, source='category.parent', many=True)
    ...

    class Meta:
        model = Product
        fields = (
            ...
            'parent_category',
            'category',
            ...
        )

当前,字段parent_category不在json-response中显示。

编辑:serializers.py:

class ProductCategorySerializer(serializers.ModelSerializer):
    
    class Meta:
        model = Category
        fields = ['name']

class ProductSubCategorySerializer(serializers.ModelSerializer):

    class Meta:
        model = SubCategory
        fields = ['name']

class ProductsSerializer(serializers.ModelSerializer):

    ...
    subcategory = ProductSubCategorySerializer(many=True, source='category')
    category = ProductCategorySerializer()
    ...

    class Meta:
        model = Product
        fields = (
            ...
            'category',
            'subcategory',
            ...
        )

电流输出:

[
    {
        "subcategory": [
            {
                "name": "sub category name",
                "category": {
                    "name": "main category name"
                }
            },
        ],
    }
]

希望的输出:

[
    {
        "category": [
            {
                "name": "main category name"
            },
            ...
        ],
        "subcategory": [
            {
                "name": "sub category name",
            },
            ...
        ],
    }
]
Rfroes87

完整的serializers设置必须是这样的:

class ProductCategorySerializer(serializers.ModelSerializer):
    
    class Meta:
        model = Category
        fields = ['name']

class ProductSubCategorySerializer(serializers.ModelSerializer):
    category = ProductCategorySerializer(source="parent")

    class Meta:
        model = SubCategory
        fields = ['name', 'category']

class ProductsSerializer(serializers.ModelSerializer):

    ...
    subcategory = ProductSubCategorySerializer(many=True, source='category')
    ...

    class Meta:
        model = Product
        fields = (
            ...
            'subcategory',
            ...
        )

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

获取节点的祖父母的名称

来自分类Dev

获取特定孩子的父母和祖父母

来自分类Dev

使用jQuery load()函数获取元素的祖父母

来自分类Dev

使用jquery .parentsUntil()或parent()获取html元素的祖父母

来自分类Dev

在 DRF 序列化器中处理 ManyToMany 字段

来自分类Dev

使用祖父母块

来自分类Dev

访问祖父母的变量

来自分类Dev

SQL Select祖父母

来自分类Dev

杰克逊在@ManyToMany关系中序列化问题

来自分类Dev

JPA ManyToMany关系和JSON序列化

来自分类Dev

DRF-嵌套反向关系序列化器

来自分类Dev

在DRF序列化器中获取模型中的每个m2m关系作为不同的对象

来自分类Dev

QPushButton附加到祖父母

来自分类Dev

Angular指令隐藏元素的“祖父母”

来自分类Dev

git rebase与祖父母的分支

来自分类Dev

xpath查找元素的祖父母

来自分类Dev

使用nltk查找祖父母节点

来自分类Dev

从子元素覆盖祖父母的css

来自分类Dev

如何在Django序列化器中的外键关系之上从ManyToMany关系访问字段?

来自分类Dev

获取所有其祖父母ID等于1的孩子

来自分类Dev

JSON解析[`jq`]:获取祖父母的兄弟姐妹的价值

来自分类Dev

如何从子记录集合中获取重要的祖父母记录集合?

来自分类Dev

获取所有其祖父母ID等于1的孩子

来自分类Dev

为什么孙子类的父级不处理祖父母类的初始化?

来自分类Dev

为什么孙子类的父级不处理祖父母类的初始化?

来自分类Dev

Unity:自版本5.0(父母/子女关系)以来的序列化问题

来自分类Dev

覆盖在祖父母的构造函数中调用的祖父母的虚拟方法

来自分类Dev

使DIV达到祖父母高度的100%,同时也拉伸祖父母的宽度

来自分类Dev

在孩子的祖父母或外祖父母中建立父节点。XSL

Related 相关文章

热门标签

归档