Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Posso usar objetos Django F() com concatenação de strings?


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