मैं कुछ मौजूदा कोड को बेहतर बनाने की कोशिश कर रहा हूं जो मूल रूप से एक बड़ा डेटा तैयार करने के लिए 3 मिनट लगते हैं (फिर अजाक्स द्वारा लौटाया जाता है)। पुराना कोड एक बड़ी क्वेरीसेट पर पुनरावृत्त होता है, विभिन्न प्रकार की संबंधित वस्तुओं से जानकारी इकट्ठा करता है। जो मैंने पढ़ा है, और एसक्यूएल लॉग की निगरानी से, क्वेरीसेट पर पुनरावृत्ति आमतौर पर एक बुरा विचार है, क्योंकि प्रत्येक आइटम के लिए एसक्यूएल निष्पादित किया जाता है। इसके बजाय, मैं एक एकल SQL कथन में जानकारी एकत्र करने के लिए मानों का उपयोग कर रहा हूं, फिर उसके माध्यम से पुनरावृत्ति कर रहा हूं। इस तकनीक का उपयोग करके, मैंने निष्पादन समय को 15 सेकंड से कम कर दिया है (और मैं अभी भी नहीं कर रहा हूं)। हालांकि, क्योंकि अब मैं मॉडल ऑब्जेक्ट्स का उपयोग नहीं कर रहा हूं, मैं get_FOO_display() का उपयोग नहीं कर सकता। क्या मान() का उपयोग करते समय इस कार्यक्षमता का उपयोग करने का कोई तरीका है?Django: मानों का उपयोग() और get_FOO_display()?
सरलीकृत, मूल था:
for user in users:
data.append(user.get_name_display()) # Appends 'Joe Smith'
return data
और नया कोड है:
for user in users.values('name'):
data.append(user['name']) # Appends 'JSmith001', which is incorrect
return data
इसके अलावा, वहाँ मॉडल के निर्माण को बचाने के लिये किसी अन्य तरह से अभी तक वस्तुओं है कि अगर केवल एक ही एसक्यूएल की आवश्यकता है बैकएंड पर बयान, मुझे इसके बारे में जानना अच्छा लगेगा। धन्यवाद!
अधिक कोड को देखने के लिए की आवश्यकता है। जवाब देने के लिए यह बहुत सामान्य है। –
क्षमा करें, मैंने उपरोक्त टिप्पणियां जोड़ दी हैं, लेकिन मुझे यकीन नहीं है कि आप और क्या देखना चाहते हैं। – Nathan