2011-01-31 16 views
8

trato de asignar valor a los atributos de algunos calss como la siguiente:asignar un atributo mediante getattr

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

pero conseguir el excption: "no se puede asignar a funcionar llamada"

cómo ¿Puedo cambiar los atributos sin conocerlos al momento de cumplir?

+1

Esto es muy inseguro. ¿Qué pasa si alguien pasa un parámetro id = en la URL? Sobrescribirían los datos existentes. ¿Es este Django o un marco similar? Debe usar el manejo de formulario adecuado para guardar datos. – ironfroggy

Respuesta

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

pero recomiendo guardar los datos de petición en un diccionario, clase dedicada, o acceder directamente - a menos que estés haciendo específica metaprogramming/introspección, setattr es a menudo la herramienta equivocada para el trabajo.

Cuestiones relacionadas