Django序列化来自不同模型的字段
Posted
技术标签:
【中文标题】Django序列化来自不同模型的字段【英文标题】:Django Serialize a field from a different model 【发布时间】:2022-01-19 09:41:27 【问题描述】:我有 3 个这样的模型:
class Category(ClassModelo):
description = models.CharField(
max_length=100,
unique=True
)
class SubCategory(ClassModelo):
pk_category = models.ForeignKey(Category, on_delete=models.CASCADE)
description = models.CharField(
max_length=100,
)
class Product(ClassModelo):
code = models.CharField(
description = models.CharField(max_length=200)
pk_subcategory = models.ForeignKey(SubCategory, on_delete=models.CASCADE
)
我想序列化类别模型中的字段描述,我尝试使用以下代码但它不起作用(category = serializers.ReadOnlyField(source='pk_subcategory__pk_category_description'):
class ProductsSerializer(serializers.ModelSerializer):
subcategory = serializers.ReadOnlyField(
source='pk_subcategory.description')
category = serializers.ReadOnlyField(source='pk_subcategory__pk_category_description')
class Meta:
model = Product
fields = ("id", "description", "category", "subcategory")
【问题讨论】:
【参考方案1】:在 source
参数中使用 dotted 表示法。所以应该是
pk_subcategory.pk_category.description
而不是pk_subcategory__pk_category_description
【讨论】:
以上是关于Django序列化来自不同模型的字段的主要内容,如果未能解决你的问题,请参考以下文章
Django REST Framework 序列化程序字段必需=false
Django 仅序列化一个字段而不是相关字段中的整个模型(只读)