2011-11-23 12 views
8

Ignora il metodo __init__ del mio modulo. posso impostare il valore iniziale nel modo seguente:Come si modifica il valore associato per un campo in un modulo associato in django?

self.fields['fieldname'].initial = .... 

Ma dato che essa è tenuta, chiamando quanto sopra non ha alcun effetto. Ho provato a fare questo:

self.fields['fieldname'].bound_data = .... 

, ma questo non funziona. C'è un modo per farlo?

+0

Perché si desidera modificare i dati associati? –

+1

Nell'immagine più grande, sto usando il formwizard. Se la selezione del modulo precedente è cambiata; Voglio precompilare il modulo successivo con nuovi dati. – canadadry

risposta

9

È possibile aggiornare il modulo data dict

self.data['fieldname'] = new_value 

bound_data è un metodo, non un attributo, quindi non è possibile impostare il valore lì.

request.GET e request.POST sono immutabili, a meno che non si crei un copy(). È possibile eseguire la copia nel metodo __init__ o prima di associare il modulo.

data = request.POST.copy() 
form = MyForm(data=data) 
+2

Ho provato questo e ha gettato l'errore: 'Questa istanza di QueryDict è immutabile' – canadadry

+1

È necessario copiare il' QueryDict', quindi cambiarlo. Ho aggiornato la mia risposta. – Alasdair

+0

Sembra che anche "self.data" sia immutabile. Fare una copia di 'request.POST' come hai suggerito, però, è il trucco. – mgalgs

Problemi correlati