Eu tive uma questão semelhante; basicamente eu queria concatenar dois campos para obter o nome completo de um usuário. Eu resolvi dessa maneira (mas devo dizer que estava usando o 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()))
onde,
F('...')
avalia seu argumento como uma consulta, para que você possa consultar um campo do próprio modelo ou abranger modelos como faria em filter/get, enquanto Value('...')
avalia seu argumento literalmente (no meu caso eu precisava de um espaço para ser colocado entre first_name
e last_name
) e output_field=...
especifica o tipo do campo anotado (eu queria ser um CharField
).Para mais informações, você pode ler os documentos do Django sobre Concatenar
Espero que seja útil para alguém lá fora. Saúde