name
キーを対応するUser
オブジェクトとして値を使用して辞書を作成しようとしています。
Django shell wrapper の Python シェルを使用しています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>
}
これを達成する他の方法があることは知っていますが、なぜ辞書内包表記がここで機能しないのか興味があります。
任意のヒント?
ここで何か不足していますか?