1. ホーム
  2. python

オブジェクトがアイテム割り当てをサポートしていないエラー

2023-08-03 04:06:38

質問

私の views.py フォームを保存する前に値を代入しています。以前は次のような方法でやっていました。

projectForm.lat = session_results['lat']
projectForm.lng = session_results['lng']

さて、変数のリストが少し長くなったので、ループさせるために session_results をループさせたいのですが、以下のようなループがあります (Adam の説明では ここで ):

for k,v in session_results.iteritems():
    projectForm[k] = v

しかし、次のようなエラーが発生します。 'Project' object does not support item assignment というエラーが出ます。なぜなのか理解に苦しみます。 Project はモデルクラスで、ModelFormに使っています。

ありがとうございました。

どのように解決するのですか?

モデルオブジェクトは項目の割り当てをサポートしていません。 MyModel.objects.latest('id')['foo'] = 'bar' はこの同じエラーを投げます。

少し紛らわしいのですが、モデルのインスタンスが projectForm ...

最初のコードのブロックをループで再現するためには setattr

for k,v in session_results.iteritems():
    setattr(projectForm, k, v)