我正在使用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)
我尝试了很多代码但都失败了。
答案 0 :(得分:3)
您可以使用field
确认print(type(field))
的对象类型。考虑到错误,它可能不是一个字符串。
查看代码,field
看起来像属性的对象是字符串,例如LastName
。这条线
val = getattr(obj, field)
阅读可能会更好
val = getattr(obj, field.someattribute)
如果field.someattribute
不是字符串,则可以使用将其强制转换为字符串
str(field.someattribute)
总计val = getattr(obj, str(field.someattribute))
答案 1 :(得分:1)
可能是您缺少属性名称。
我为此遇到同样的错误
price = models.DecimalField(15, 2,)
但是当我修改如下所示的代码时,错误已解决。
price = models.DecimalField(max_digits=15, decimal_places=2,)