Django对象不可下标导致我写冗余代码
Django中的对象不能用“下标”来访问,这意味着如果你有 user.name
这样的写法,你不能用 user['name']
来定义它。这就导致你不能动态地用信息来加载一个对象。
info = {'first_name': 'Artur', 'last_name': 'Sapek'}
me = User()
for i in info:
me[i] = info[i]
这样会出现 TypeError: 'User' object is not subscriptable
的错误,所以我发现自己写的代码像这样:
info = {'first_name': 'Artur', 'last_name': 'Sapek'}
if 'first_name' in info: me.first_name = info['first_name']
if 'last_name' in info: me.first_name = info['last_name']
so on...
(这段代码还需要用到if语句,因为信息可能不完整,这并不是我实际的代码)
有没有更好的方法来处理Django对象呢?因为它们不像列表、字典和字符串那样可以灵活地使用方括号来访问。
2 个回答
9
为什么不这样做呢:
info = {'first_name': 'Artur', 'last_name': 'Sapek'}
user = User(**info)
当然,如果你使用的是 contrib.auth
的 User
模型,你需要提供一些必填的字段。
13