Подтвердить что ты не робот

Объект не поддерживает ошибку присваивания элемента

В моем 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.

Благодарим за помощь!

4b9b3361

Ответ 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] для доступа сейчас.