Saya memiliki masalah serupa; pada dasarnya saya ingin menggabungkan dua bidang untuk mendapatkan nama lengkap pengguna. Saya menyelesaikannya dengan cara ini (tetapi harus dikatakan bahwa saya menggunakan 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()))
dimana, F('...')
mengevaluasi argumennya sebagai kueri, sehingga Anda dapat menanyakan bidang model itu sendiri, atau menjangkau seluruh model seperti yang akan Anda lakukan di filter/get, sementara Value('...')
mengevaluasi argumennya secara harfiah (dalam kasus saya, saya membutuhkan ruang untuk ditempatkan di antara first_name
dan last_name
), dan output_field=...
menentukan Jenis bidang beranotasi (saya ingin menjadi CharField
).Untuk info lebih lanjut, Anda dapat membaca Django docs tentang Concat
Semoga bermanfaat bagi seseorang di luar sana. Semangat