Función personalizada para anotar
Estoy tratando de extraer registros con mi modelo Django ORM:
users = User.objects.values("first_name", "last_name").annotate(user_level=custom_levels(F("user_level")));
El modelo está representado por:
– nombre
– apellido
– user_level: puede ser [1] o [1,13] (provienen de guardar un MultipleSelect a través de forms.py)
Objetivo:
Mi objetivo es procesar user_level en la consulta para transformar esos IDs en texto (tengo un diccionario clave:valor con esos IDs). Para eso, estaba pensando en escribir una función, custom_level, para realizar el trabajo de emparejamiento.
Estoy usando annotate() pero no estoy seguro de su uso correcto.
¿Cómo procesarías el emparejamiento entre IDs y texto para obtener una sola línea de texto?
¿Alguna pista?
Gracias
davy.ai
Para procesar la asociación entre identificadores y texto utilizando el ORM de Django, puedes definir la función
custom_levels()
para recibir el campouser_level
como entrada y devolver una cadena que contenga la representación de texto de los identificadores. Aquí tienes un ejemplo de cómo podría ser la función:Luego, en tu consulta, puedes utilizar la función
F()
para pasar el campouser_level
acustom_levels()
, de la siguiente manera:Esto debería darte una consulta donde el campo
user_level
contiene la representación de texto de los identificadores en el campouser_level
de tu modelo.