मेरा मुद्दा भी ऐसा ही था; मूल रूप से मैं उपयोगकर्ता का पूरा नाम प्राप्त करने के लिए दो क्षेत्रों को जोड़ना चाहता था। मैंने इसे इस तरह हल किया (लेकिन मुझे कहना होगा कि मैं पोस्टग्रेज़ का उपयोग कर रहा था):
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()))
जहां, F('...')
एक क्वेरी के रूप में इसके तर्क का मूल्यांकन करता है, इसलिए आप मॉडल के किसी क्षेत्र को क्वेरी कर सकते हैं, या मॉडल में फैले हुए हैं जैसा कि आप फ़िल्टर/प्राप्त में करेंगे, जबकि Value('...')
अपने तर्क का शाब्दिक रूप से मूल्यांकन करता है (मेरे मामले में मुझे first_name
. के बीच में रखने के लिए एक स्थान की आवश्यकता है और last_name
), और output_field=...
एनोटेट फ़ील्ड के प्रकार को निर्दिष्ट करता है (मैं एक CharField
बनना चाहता था ). अधिक जानकारी के लिए, आप Django डॉक्स के बारे में पढ़ सकते हैं कॉनकैट
उम्मीद है कि यह वहां किसी के लिए मददगार होगा। चीयर्स