对象的属性是否可以动态生效?
属性名称是:
pergunta1item
pergunta2item
此数据是动态生成的。
我试过这种方式
{{ object.data.pesquisa+var.id+item }}
但是,没有用。
感谢。
答案 0 :(得分:1)
您需要将属性名称构造为字符串,然后use getattr
在父对象上查找它,替换:
object.data.pesquisa+var.id+item
使用:
# We're looking up an attribute of object.data
# with a dynamically generated name
getattr(object.data, 'pesquisa{}item'.format(var.id))
请注意,正如其他人所提到的,一组编号的项目可能应该作为单个list
(或tuple
或dict
处理,具体取决于需求)名称,所以你可以这样做:
object.data.pesquisaitems[var.id]
在固定名称上查找动态索引,但如果无法更改数据源,则可以使用getattr
。
答案 1 :(得分:-2)
我们当然可以。您需要做的是添加新的归因并分配给旧值,然后删除旧归属。
def motify_attri(d,newattr,oldattr):
d[newattr] = d[oldattr]
d.pop(oldattr)
d = dict(key1='a',key2='2')
print(d)
motify_attri(d,'key3','key2')
print(d)
然后:
{'key2': '2', 'key1': 'a'}
{'key3': '2', 'key1': 'a'}
[Finished in 0.0s]