django - 如何使用序列化仅序列化某些字段?
问题描述
假设我有一个序列化程序
class ProductSerializer(serializers.ModelSerializer):
product_brand = serializers.StringRelatedField()
product_type = serializers.StringRelatedField()
class Meta:
model = Product
fields = '__all__'
我想对其他序列化程序使用相同的序列化程序,但我只需要从中获取 product_type 即:
class ItemSerializer(serializers.ModelSerializer):
product = ProductSerializer( # only get product_type)
...
class Meta:
model = Item
fields = '__all__'
想要的结果是:
{
...
"product": {
"product_type": "Random"
}
}
解决方案
如果要获取此数据:
{
...
"product": {
"product_type": "Random"
}
}
您可以使用此序列化程序:
class ProductSerializer(serializers.ModelSerializer):
product_brand = serializers.StringRelatedField()
class Meta:
model = Product
fields = ('product_brand', )
class ItemSerializer(serializers.ModelSerializer):
product = ProductSerializer()
...
class Meta:
model = Item
fields = '__all__'
此外,您可以简化它:
class ItemSerializer(serializers.ModelSerializer):
product_type = serializers.CharField(source="product.product_type")
...
class Meta:
model = Item
fields = '__all__'
你会得到这样的结果:
{
...
"product_type": "Random"
}
推荐阅读
- javascript - 如何在我的 React 应用程序中使用 react-compound-timer
- php - Carbon PHP 加个
- javascript - React Spring - 渲染之间的动画元素
- mysql - 使用 MySQL 在 SELECT 中附加通配符
- python - int() 和 int(input()) 的区别
- java - 如何使用 Gson 从 JSON 中一次读取一个变量?
- amazon-web-services - 如何确定一个 AWS s3 存储桶是否至少有一个公共对象?
- c++ - 如何在 PCL 中的体素过滤器后使用 SACS 分割
- python - 使用 openpyxl python 的大型数据集出错
- php - 潜在的mysql服务器问题?