我正在使用 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)
Run Code Online (Sandbox Code Playgroud)
我尝试了许多代码变体,但都失败了。
可以确认的对象类型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))
小智 5
可能是您缺少属性名称。
我为此遇到了同样的错误
price = models.DecimalField(15, 2,)
Run Code Online (Sandbox Code Playgroud)
但是当我修改如下代码时,错误得到解决。
price = models.DecimalField(max_digits=15, decimal_places=2,)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15989 次 |
| 最近记录: |