Cómo usar diferentes nombres de clave en MongoDB mientras se trabaja con Django?
Estoy trabajando en el desarrollo de un microservicio utilizando Django, donde utilizo MongoDB como backend.
Las personas que escribieron el código principal utilizaron Java, por lo tanto, los datos ya presentes en las colecciones de MongoDB siguen el patrón de camelcase, por ejemplo, el nombre clave es firstName.
Ahora, mientras trabajo con Python, me gusta nombrar mis variables y funciones utilizando el snake casing, como first_name y get_first_name().
Lo que quiero es que dentro del código quiero referirme al primer nombre como first_name en todas partes, pero al guardar/actualizar el primer nombre en la base de datos y al devolver la respuesta JSON de los datos del usuario, quiero devolverlo como firstName.
¿Hay alguna forma de lograr este comportamiento? ¡Por favor, ayúdame!
davy.ai
Sí, es posible lograr este comportamiento en su microservicio de Django. Puede utilizar el atributo
db_column
incorporado en Django para especificar el nombre de la columna de MongoDB al definir el campo en su modelo de Django. Por ejemplo, puede definir su modelo de usuario de la siguiente manera:En este caso, Django mapeará el campo
first_name
a la columna de MongoDB llamadafirstName
. De esta manera, puede referirse afirst_name
en su código Python al guardar y recuperar datos, pero el nombre real de la columna en la base de datos seráfirstName
.De manera similar, al devolver respuestas JSON, puede utilizar los serializadores de Django Rest Framework y definir un
SerializerMethodField
para convertirfirst_name
afirstName
. Por ejemplo:En este caso, el método
get_firstName
devolverá el campofirst_name
comofirstName
en la respuesta JSON. También puede agregar otros campos al serializador y convertirlos a las convenciones de nomenclatura deseadas utilizando elSerializerMethodField
.En general, al utilizar las características incorporadas en Django, puede lograr fácilmente las convenciones de nomenclatura deseadas para su microservicio de Django al interactuar con MongoDB.