首页 > 解决方案 > Django 模型序列化程序返回 ID

问题描述

我已经创建了如下模型和序列化程序

序列化程序.py

class ProductCategorySerializer(ModelSerializer):
    class Meta:
        model = ProductCategory
        fields = ['id', 'name']

    @staticmethod
    def get_product_category_name(obj):
        return obj.product_categories.name


class ProductSerializer(ModelSerializer):
    product_categories = ProductCategorySerializer

    class Meta:
        model = Product
        fields = ['id', 'name', 'default_price', 'description', 'product_categories']

模型.py

class ProductCategory(models.Model):
    class Meta:
        db_table = 'itw_product_category'
        verbose_name = 'product category'
        verbose_name_plural = 'product categories'

    name = models.CharField(max_length=50)

    def __str__(self):
        return self.name


class Product(models.Model):
    class Meta:
        db_table = 'itw_product'
        verbose_name = 'product'
        verbose_name_plural = 'products'

    name = models.CharField(max_length=50)
    default_price = models.FloatField(max_length=10)
    description = models.TextField(max_length=50)
    deleted = models.BooleanField(default=False)

    product_categories = models.ManyToManyField(ProductCategory, verbose_name='product_categories', related_name='products')

现在,当我尝试创建一个新模型时,product_categories 只返回 id 而不是名称,我应该改变什么?

例子:

{
    "id": 25,
    "name": "kms",
    "default_price": 932.0,
    "description": "kms",
    "product_categories": [
        5
    ]
}

标签: pythondjangodjango-modelsdjango-rest-framework

解决方案


希望这可以帮到你。另外,请阅读嵌套关系

class ProductSerializer(ModelSerializer):
    product_categories = ProductCategorySerializer(many=True)

推荐阅读