J'ai eu un problème similaire; fondamentalement, je voulais concaténer deux champs pour obtenir le nom complet d'un utilisateur. Je l'ai résolu de cette façon (mais je dois dire que j'utilisais 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()))
où, F('...')
évalue son argument en tant que requête, de sorte que vous pouvez interroger un champ du modèle lui-même, ou s'étendre sur plusieurs modèles comme vous le feriez dans filter/get, tandis que Value('...')
évalue son argument littéralement (dans mon cas, j'avais besoin d'un espace à placer entre first_name
et last_name
), et output_field=...
spécifie le Type du champ annoté (je voulais être un CharField
).Pour plus d'informations, vous pouvez lire Django docs about Concat
J'espère que ce sera utile pour quelqu'un là-bas. Bravo