Объект не поддерживает ошибку присваивания элемента
В моем 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.
Благодарим за помощь!
Ответы
Ответ 1
Ошибка кажется ясной: объекты модели не поддерживают назначение элемента.
MyModel.objects.latest('id')['foo'] = 'bar'
выдаст ту же ошибку.
Немного смущает, что ваш экземпляр модели называется projectForm
...
Чтобы воспроизвести первый блок кода в цикле, вам нужно использовать setattr
for k,v in session_results.iteritems():
setattr(projectForm, k, v)
Ответ 2
Другим способом было бы добавить функцию __ getitem __, __ setitem __
def __getitem__(self, key):
return getattr(self, key)
Вы можете использовать self [key] для доступа сейчас.