python - 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
]
}
解决方案
希望这可以帮到你。另外,请阅读嵌套关系。
class ProductSerializer(ModelSerializer):
product_categories = ProductCategorySerializer(many=True)
推荐阅读
- python - 如何更改在 PyTorch 的嵌入层上执行一维卷积的轴?
- spring-boot - 如何重新启动失败的spring批处理csv插入mysql?
- rust - 什么是隐式强制传递性的例子?
- javascript - 有什么方法可以将变量 A 从按钮(onlick=xxx)传递给 java 或 jsp
- xaml - Xamarin Forms / Crossplatform - 具有仅影响部分屏幕的选项卡式布局
- r - 如何使两列以上的 plot.data.frame 与 par(mfrow) 一起使用
- android - Flutter pageview:查找第一页和最后一页并滑动方向
- ruby - 从命令行运行时,反引号在 ruby 脚本中工作,但不是从 Crontab
- gradle - Gradle:如何在构建期间制作 Jar
- rest - REST API,了解将元素添加到空列表的格式