2011-01-31 2 views
8

я пытаюсь присвоить значение атрибутов некоторых Calss вроде следующего:назначить атрибут с помощью GetAttr

for name in dir(modelType): 
     if request.get(name): 
      getattr(model, name) = request.get(name) 

но получить excption: «не может назначить вызов функционировать»

как Могу ли я изменить атрибуты, не зная их в соответствующее время?

+1

Это очень опасно. Что делать, если кто-то передает URL-адрес id =? Они будут перезаписывать существующие данные. Является ли этот Django или аналогичная структура? Вы должны использовать правильную обработку формы для сохранения данных. – ironfroggy

ответ

13

Для присвоения значений атрибутам используется setattr().

См: http://docs.python.org/library/functions.html#setattr

+0

Точно, я собирался опубликовать одно и то же, но был заблокирован для ответа слишком быстро! – dicato

+2

:-) Никогда не скучно здесь, на SO. – payne

5
setattr(model, name, request.get(name)) 

, но я бы рекомендовал сохранить данные запроса в словаре, выделенном классе, или доступ к нему напрямую - если вы делаете конкретные Метапрограммирование/самоанализ, SetAttr часто неправильный инструмент для работы.

Смежные вопросы