orokusaki
orokusaki

Reputation: 57198

DJANGO - How do you access the current model instance from inside a form

class EditAdminForm(forms.ModelForm):
    password = username.CharField(widget=forms.TextInput())
    password = forms.CharField(widget=forms.PasswordInput())
    password_confirm = forms.CharField(widget=forms.PasswordInput(), initial=???)

You can see what I'm trying to do here. How would I go about pre-populating the pasword_confirm field (which is not part of the model). I'm so confused.

Upvotes: 0

Views: 1083

Answers (2)

Zada Zorg
Zada Zorg

Reputation: 2818

You can define __init__ method in EditAdminForm.

something like:

class EditAdminForm(forms.ModelForm):
    username = forms.CharField(widget=forms.TextInput())
    password = forms.CharField(widget=forms.PasswordInput())
    def __init__(self, initial_from, data=None, initial=None)
        sefl.fields['password_confirm'] = forms.CharField(widget=forms.PasswordInput(), initial=initial_from)

Upvotes: 0

Daniel Roseman
Daniel Roseman

Reputation: 600041

You can't access the instance in the form declaration, because there isn't one until you instantiate it.

However, if all you want to do is set dynamic initial data, do this with the initial parameter on instantation:

form = EditAdminForm(initial={'password':'abcdef'})

Upvotes: 2

Related Questions