如何为不同的请求使用相同的序列化器?



假设我有一个VehicleSerializer

class VehicleSerializer(serializers.Serializer):
person = PersonSerializer()
class Meta:
model = Vehicle
fields = ('id', 'type', 'person')

我需要使用这个序列化器get和post api。对于get请求,这应该是相同的,但对于post请求,我需要发送这样的数据:

{
"type": "Car",
"person": 1 (the id of the person row)
}

我如何使用相同的车辆序列化器来验证这个请求?因为上面的序列化器将只接受person键的字典值。如有任何帮助,不胜感激。

我认为你需要设置person_id字段用于写作。

class VehicleSerializer(serializers.ModelSerializer):
person = PersonSerializer(read_only = True)
person_id = serializers.IntegerField(write_only = True)
class Meta:
model = Vehicle
fields = ('id', 'type', 'person', 'person_id')

最新更新