2011-01-31 11 views
8

cerco di assegnare il valore di attributi di alcuni calss come la seguente:assegnare un attributo usando getattr

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

ma ottenere l'excption: "non può assegnare alla funzione di chiamata"

come posso cambiare gli attributi senza conoscerli al momento della compilazione?

+1

Questo è molto pericoloso. Cosa succede se qualcuno passa un parametro id = nell'URL? Sovrascriverebbero i dati esistenti. È questo Django o una struttura simile? È necessario utilizzare la corretta gestione dei moduli per salvare i dati. – ironfroggy

risposta

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

ma io consiglierei di salvare i dati di richiesta in un dizionario, classe dedicata, o accedendo direttamente - a meno che non si sta facendo specifico metaprogrammazione/introspezione, setattr è spesso lo strumento sbagliato per il lavoro.

Problemi correlati