如何解决Django Model序列化器返回ID
我已经如下创建模型和序列化器
serializers.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']
models.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 ProductCategory(models.Model):
product_categories = StringRelatedField(many=True)
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
,
希望这可以为您提供帮助。另外,请阅读nested relationship。
class ProductSerializer(ModelSerializer):
product_categories = ProductCategorySerializer(many=True)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。