Jag hade ett liknande problem; i grund och botten ville jag sammanfoga två fält för att få det fullständiga namnet på en användare. Jag fick det löst på detta sätt (men måste säga att jag använde 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()))
där, F('...')
utvärderar dess argument som en fråga, så du kan fråga ett fält av själva modellen, eller spänna över modeller som du skulle göra i filter/get, medan Value('...')
utvärderar dess argument bokstavligen (i mitt fall behövde jag ett mellanslag mellan first_name
och last_name
), och output_field=...
anger typen av det kommenterade fältet (jag ville vara ett CharField
).För mer info kan du läsa Django-dokument om Concat
Hoppas det är till hjälp för någon där ute. Skål