Объект не поддерживает ошибку назначения элемента - PullRequest
44 голосов
/ 17 декабря 2011

В моем views.py я присваиваю значения перед сохранением формы.Раньше я делал это следующим образом:

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

Теперь, поскольку список переменных стал немного длиннее, я хотел зациклить session_results с помощью следующего цикла (как описано Адамом ).здесь ):

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

Но я получаю ошибку 'Project' object does not support item assignment для решения цикла.У меня есть проблемы, чтобы понять почему.Project - это класс модели, который я использую для ModelForm.

Спасибо за помощь!

Ответы [ 2 ]

62 голосов
/ 17 декабря 2011

Ошибка кажется очевидной: объекты модели не поддерживают назначение элементов. MyModel.objects.latest('id')['foo'] = 'bar' выдаст ту же ошибку.

Немного странно, что экземпляр вашей модели называется projectForm ...

Чтобы воспроизвести ваш первый блок кода в цикле, вам нужно использовать setattr

for k,v in session_results.iteritems():
    setattr(projectForm, k, v)
19 голосов
/ 14 августа 2013

Другим способом было бы добавить __ getitem __ , __ setitem __ function

def __getitem__(self, key):
    return getattr(self, key)

Вы можете использовать self [key] для доступа сейчас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...