Ik had een soortgelijk probleem; eigenlijk wilde ik twee velden samenvoegen om de volledige naam van een gebruiker te krijgen. Ik heb het op deze manier opgelost (maar moet zeggen dat ik Postgres gebruikte):
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()))
waar, F('...')
evalueert zijn argument als een query, zodat u een veld van het model zelf kunt doorzoeken, of modellen kunt overspannen zoals u zou doen in filter/get, terwijl Value('...')
evalueert zijn argument letterlijk (in mijn geval had ik een spatie nodig tussen first_name
en last_name
), en output_field=...
specificeert het Type van het geannoteerde veld (ik wilde een CharField
zijn) ). Voor meer informatie kunt u Django-documenten over Concat
Ik hoop dat het nuttig zal zijn voor iemand die er is. Proost