Python Django getattr():属性名称必须为字符串

rmbxnbpk  于 2023-05-19  发布在  Go
关注(0)|答案(2)|浏览(139)

我正在使用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)

我尝试了许多不同的代码,但都失败了。

6mw9ycah

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))

hiz5n14c

hiz5n14c2#

可能是您缺少属性名称。
我得到了同样的错误

price = models.DecimalField(15, 2,)

但当我修改了下面的代码错误得到解决.

price = models.DecimalField(max_digits=15, decimal_places=2,)

相关问题