因此,我喜欢使用基于类的视图和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