2

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

コードの多くのバリエーションを試しましたが、すべて失敗しました。

4

2 に答える 2

5

のオブジェクトタイプは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))

于 2016-11-30T17:33:54.683 に答える