因此,我喜欢使用基于类的视图和ModelSerializers的想法,但是对于我的特定用例,我有一个问题。也许我没有使用它,因为它打算被使用。
class CarSerializer(serializers.ModelSerializer):
class Meta:
model = CarModel
fields = ['car_name']
# A car can have build for multiple years
class MakelHistorySerializer(serializers.ModelSerializer):
car = CarSerializer(many=True, read_only=True)
class Meta:
model = MakeHistoryModel
fields = ['model_year', 'car']
响应为:
{
"car": {
"car_name": "Fiesta"
},
"model_year": "2020"
}
我的两个模型类CarModel和MakeHistoryModel分别具有[“ id”,“ car_name”,“ manufacturer”]和[“ id”,“ car_id”,“ model_year”,“ country_id”]字段。
我真正想要的回应是:
{
"car_name": "Fiesta",
"model_year": "2020"
}
我该怎么做?
您不需要先使用序列化器(CarSerializer)。只需此序列化器具有足够的SerializerMethodField即可输出:
class MakelHistorySerializer(serializers.ModelSerializer):
car_name = serializers.SerializerMethodField()
class Meta:
model = MakeHistoryModel
fields = ['model_year', 'car_name']
def get_car_name(self,obj):
return obj.car.name if obj.car_id else ''
# I don't know your model so to avoid NoneType error, I added this check
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句