Buenas!
Estoy usando Django Rest Framework.
Consumo una API que devuelve los campos en mayúsculas. Ejemplo:
{
"CODIGO": 1,
"NOMBREPERSONA": "Marco",
"APELLIDOPERSONA": "Richetta"
}
Creé un serializer para recibir y validar esos datos.
class EmpleadoSerializer(serializers.Serializer):
CODIGO = serializers.IntegerField()
NOMBREPERSONA = serializers.CharField()
APELLIDOPERSONA = serializers.CharField()
Problema
Lo que necesito es cambiar los nombres de los campos a camelCase
pero no estoy seguro cuál es el mejor lugar para hacerlo.
De momento sobrescribí el método to_representation
del serializer de la siguiente manera:
def to_representation(self, instance):
# Este dict se utiliza para transformar las keys
# con las que vienen los datos desde la api
fields_map = {
"CODIGO": "codigo",
"NOMBREPERSONA": "nombrePersona",
"APELLIDOPERSONA": "apellidoPersona",
}
for key, value in fields_map.items():
# Se cambia el nombre el campo. Ej: NOMBREPERSONA => nombrePersona
instance[value] = instance.pop(key)
return instance
Cumple con la función pero no estoy seguro de que sea el mejor lugar para cambiarlo.
Hay una lib bastante usada que hace la conversión underscore <=> camelCase
pero en este caso necesito definir manualmente las conversiones de los campos.
El otro problema tiene que ver con que Swagger me muestra el ejemplo de la Response con los campos en mayúscula. Tendría que ver dónde sobrescribir la generación del schema OpenAPI para que genere con los nombres que necesito. La librería que uso para generar el swagger es esta.
Gracias de antemano.