मैं name
के साथ एक कुंजी बनाने की कोशिश कर रहा हूं और संबंधित User
ऑब्जेक्ट के रूप में मानता हूं।dict समझ का उपयोग करते समय समस्याएं। NameError: वैश्विक नाम परिभाषित नहीं किया गया है
मैं Django खोल आवरण python manage.py shell
से अजगर खोल उपयोग कर रहा हूँ:
>>> from django.contrib.auth.models import User
>>> names = ['carl', 'jim', 'jack', 'john', 'mark']
# Now using some dict comprehension
>>> u = {name: User.objects.get(username=name) for name in names}
NameError: global name 'User' is not defined
बहरहाल, यह मेरे लिए काम करता है:
u = {}
for name in names:
u[name] = User.objects.get(username=name)
और मैं वांछित आउटपुट है, जो मिलती है:
{
'carl': <User: carl>,
'jack': <User: jack>,
'jim' : <User: jim>,
'john': <User: john>,
'mark': <User: mark>
}
मुझे पता है, इसे पूरा करने के अन्य तरीके हैं, लेकिन मुझे उत्सुकता है कि क्यों धक्का समझते हैं आयन यहाँ काम नहीं कर रहे हैं।
कोई सुझाव?
क्या मुझे यहां कुछ याद आ रही है?
मुझे ऐसा कोई मुद्दा नहीं दिख रहा है, तो आप कुछ याद कर रहे हैं! – Rohan
हो सकता है कि शब्दकोश बंद करने के लिए समान नामस्थान को खोल के रूप में उपयोग नहीं किया जा रहा है। क्या यू यू = यूजर है; u = {name: नामों के नाम पर U.objects.get (उपयोगकर्ता नाम = नाम)} 'कोई फर्क पड़ता है? (बस सोच रहा है कि यह एक बग है) – Dunes
@ रोहन, आप किस कदम का पालन कर रहे हैं? @ ड्यून्स, कोई भी काम नहीं करता है, मुझे 'नाम त्रुटि: वैश्विक नाम' यू 'परिभाषित नहीं किया गया है' –