由于每个票证类型的模型都不同,我建议您创建一个单独的序列化程序,用一个通用视图为每个不同的模型验证它们。
您可以覆盖
get_serializer
view
选择合适的
serializer
取决于车票的类型。像这样的
def get_serializer(self, *args, **kwargs):
"""
Return the serializer instance that should be used for validating and
deserializing input, and for serializing output.
"""
type = self.request.data.get("type", '')
if type === 'normal':
return NormalTicketSerializer(*args, **kwargs)
elif type == 'abnormal':
return AbnormalTicketSerializer(*args, **kwargs)
else:
raise ParseError(detail='Ticket type not supported') # This will return bad request response with status code 400.