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