2011-11-23 8 views
8

Zastępuję metodę __init__ mojego formularza. mogę ustawić wartość początkową, wykonując następujące czynności:Jak zmodyfikować powiązaną wartość dla pola w formie powiązanej w django?

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

Ale biorąc pod uwagę, że jest ona związana, nazywając powyższe nie ma wpływu. Próbowałem wykonać następujące czynności:

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

ale to nie działa. Czy jest jakiś sposób na zrobienie tego?

+0

Dlaczego chcesz zmodyfikować powiązane dane? –

+1

Na większym obrazie używam formwizard. Jeśli poprzednia forma została zmieniona; Chcę wypełnić następny formularz nowymi danymi. – canadadry

Odpowiedz

9

Można zaktualizować formularz za data DICT

self.data['fieldname'] = new_value 

bound_data jest metodą, nie atrybut, więc nie można ustawić wartość tam.

request.GET i request.POST są niezmienne, chyba że utworzysz copy(). Możesz wykonać kopię w swojej metodzie __init__ lub przed związaniem formularza.

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

Próbowałem tego i wyrzucił błąd: 'Ta instancja QueryDict jest niezmienna" – canadadry

+1

Musisz skopiować 'QueryDict', a następnie zmienić. Zaktualizowałem swoją odpowiedź. – Alasdair

+0

Wygląda na to, że 'self.data' również jest niezmienne. Sporządzenie kopii 'request.POST', jak sugerujesz, jednak działa. – mgalgs

Powiązane problemy