miałem podobny problem; w zasadzie chciałem połączyć dwa pola, aby uzyskać pełną nazwę użytkownika. Tak to rozwiązałem (ale muszę powiedzieć, że używałem Postgresa):
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()))
gdzie, F('...')
ocenia swój argument jako zapytanie, więc możesz zapytać o pole samego modelu lub rozciągnąć między modelami, tak jak robisz to w filter/get, podczas gdy Value('...')
ocenia swój argument dosłownie (w moim przypadku potrzebowałem spacji między first_name
i last_name
) i output_field=...
określa Typ pola z adnotacjami (chciałem być CharField
).Aby uzyskać więcej informacji, przeczytaj dokumentację Django na temat Konkat
Mam nadzieję, że komuś się to przyda. Pozdrawiam