Django Python遍历属性名集合获取CustomUser属性值的解决方法
问题原因
你循环中写的customuser.f属于固定属性访问语法,程序会直接查找CustomUser对象里名为f的属性,不会把遍历变量f存储的字符串值(比如'department')当作实际要访问的属性名,因此触发属性不存在的报错。
解决方法
使用Python内置的getattr()函数实现动态属性访问,这个函数可以传入对象、存储属性名的字符串变量,直接返回对应属性的存储值。
修改后的代码如下:
fieldx={'department','usertype','company'} for f in fieldx: print(getattr(customuser, f))
如果需要避免属性不存在时再次触发报错,可以给getattr()传入第三个参数作为默认返回值,例如:
# 若属性不存在则返回None,不会抛出报错 print(getattr(customuser, f, None))
内容的提问来源于stack exchange,提问作者AhmedBelghith
相关产品推荐
相关产品推荐

