name
anahtarlı bir dict oluşturmaya ve User
nesnesine karşılık gelen bir değer oluşturmaya çalışıyorum.Dict anlamalarını kullanırken sorunlar. NameError: global adı tanımlı değil
Django kabuk sarmalayıcı python manage.py shell
Python kabuğu kullanıyorum:
u = {}
for name in names:
u[name] = User.objects.get(username=name)
Ve istenen çıktıyı almak:
>>> 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
Ancak bu benim için çalışıyor
{
'carl': <User: carl>,
'jack': <User: jack>,
'jim' : <User: jim>,
'john': <User: john>,
'mark': <User: mark>
}
Biliyorum, bunu başarmanın başka yolları var, ama merak ettiğim neden dict anlaşılıyor iyonlar burada çalışmıyor.
Herhangi bir ipucu?
Burada bir şey özlüyor muyum?
Böyle bir sorun görmüyorum, bir şeyleri kaçırıyor olabilirsiniz! – Rohan
Sözlük kapatmanın kabukla aynı ad alanına erişememesi olabilir. 'U = Kullanıcı; u = {name: U.objects.get (kullanıcı adı = isim) isim isimleri için} 'herhangi bir fark yaratır mısınız? (Sadece bir hata olup olmadığını merak ediyorum) – Dunes
@Rohan, takip ettiğiniz adımlar neler? @Dunes, hayır ya işe yaramıyor, 'NameError: global name 'U' tanımlı değil ' –