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对象,这些对象没有像列表,字符串和字符串一样使用括号表示法的灵活性?
答案 0 :(得分:11)
答案 1 :(得分:8)
为什么不这样做:
info = {'first_name': 'Artur', 'last_name': 'Sapek'}
user = User(**info)
当然,如果您使用contrib.auth
的{{1}}模型,则需要提供必填字段。