sql >> Base de Datos >  >> RDS >> Mysql

¿Puedo usar objetos Django F() con concatenación de cadenas?

Tuve un problema similar; básicamente quería concatenar dos campos para obtener el nombre completo de un usuario. Lo resolví de esta manera (pero debo decir que estaba usando Postgres):

from django.db.models.functions import Concat
from django.db.models import F, Value, CharField

AnyModel.objects.filter(**kwargs).annotate(full_name=Concat(F('model__user_first_name'), Value(' '), F('model__user_last_name'), output_field=CharField()))

donde, F('...') evalúa su argumento como una consulta, por lo que puede consultar un campo del propio modelo, o abarcar modelos como lo haría en filter/get, while Value('...') evalúa su argumento literalmente (en mi caso, necesitaba un espacio para colocar entre first_name y last_name ), y output_field=... especifica el Tipo del campo anotado (Quería ser un CharField ).Para obtener más información, puede leer Documentos de Django sobre concat

Espero que sea útil para alguien por ahí. Saludos