python - Django 对象是 "non subscriptable"导致我编写冗余代码

标签 python django object models

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 对象,因为 Django 对象不能像处理列表、字典和字符串那样灵活地使用方括号表示法?

最佳答案

setattr正是您要找的。

在你的情况下你可以这样做:

for attr, value in info.items():
    setattr(me, attr, value)

关于python - Django 对象是 "non subscriptable"导致我编写冗余代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8951024/

相关文章:

javascript - 如何在 jQuery 中的每个循环中将数据插入数组中

python - 通过 Parse API 发送推送导致 401 Unauthorized

python - Scipy nnls算法没有终止容错选项

python - 如何从 SQLalchemy 模型创建 json 树结构

python - 我该如何着手定制夹层墨盒商店/产品?

django - 简单的内部服务器错误,因为运行 uwsgi 不断删除 .sock 文件

python - 类似 select_related 的函数在 RawQuerySet 中不起作用

javascript - 如何在 Javascript 中的嵌套数组中的过滤器内进行过滤

node.js - NodeJS - 从函数返回对象会覆盖该对象的先前声明

python - PyQt5:RecursionError:调用 Python 对象时超出最大递归深度