我正在使用Python,Django,并得到以下错误:
getattr(): attribute name must be string
location: val = getattr(obj, field)
if field in headers:
if not isinstance(field, str):
val = getattr(obj, field)
else:
val = getattr(obj, field.LastName)
if callable(val):
val = val()
if type(val) == unicode:
val = val.encode("utf-8")
row.append(val)
我尝试了许多不同的代码,但都失败了。
2条答案
按热度按时间6mw9ycah1#
您可以使用
print(type(field))
确认field
的对象类型。考虑到错误,它可能不是字符串。查看您的代码,它看起来像
field
将是一个具有 * 属性 * 的对象,这些属性是字符串,例如LastName
。那条线val = getattr(obj, field)
最好还是去阅读
val = getattr(obj, field.someattribute)
如果
field.someattribute
不是字符串,可以使用str(field.someattribute)
将其转换为字符串总计
val = getattr(obj, str(field.someattribute))
hiz5n14c2#
可能是您缺少属性名称。
我得到了同样的错误
但当我修改了下面的代码错误得到解决.