Ich hatte ein ähnliches Problem; Im Grunde wollte ich zwei Felder verketten, um den vollständigen Namen eines Benutzers zu erhalten. Ich habe es so gelöst (muss aber sagen, dass ich Postgres verwendet habe):
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()))
wobei F('...')
wertet sein Argument als Abfrage aus, sodass Sie ein Feld des Modells selbst abfragen oder sich über Modelle erstrecken können, wie Sie es in filter/get tun würden, während Value('...')
wertet sein Argument wörtlich aus (in meinem Fall brauchte ich ein Leerzeichen zwischen first_name
und last_name
) und output_field=...
gibt den Typ des annotierten Felds an (ich wollte ein CharField
sein ).Weitere Informationen finden Sie in der Dokumentation zu Django Concat
Hoffe, es wird für jemanden da draußen hilfreich sein. Prost