Měl jsem podobný problém; v podstatě jsem chtěl zřetězit dvě pole, abych získal celé jméno uživatele. Vyřešil jsem to takto (ale musím říct, že jsem používal 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()))
kde F('...')
vyhodnotí svůj argument jako dotaz, takže se můžete dotazovat na pole samotného modelu nebo se rozprostírat napříč modely, jako byste to udělali ve filtru/získání, zatímco Value('...')
vyhodnotí svůj argument doslovně (v mém případě jsem potřeboval umístit mezeru mezi first_name
a last_name
) a output_field=...
určuje typ anotovaného pole (chtěl jsem být CharField
). Pro více informací si můžete přečíst Dokumenty Django o Concat
Doufám, že to bude užitečné pro někoho tam venku. Na zdraví