Thursday 15 May 2014

django - Modelform ignoring required=True -



django - Modelform ignoring required=True -

i have modelform users can utilize alter first_name, last_name , email.

i have clean function check if user trying alter email registered email.

my code:

class djangouserform(modelform): def __init__(self, *args, **kwargs): self.helper = formhelper() self.helper.layout = layout( field('username', type="hidden"), field('first_name'), field('last_name'), field('email'), ) super(djangouserform, self).__init__(*args, **kwargs) self.fields['first_name'].required = true self.fields['last_name'].required = true self.fields['email'].required = true class meta: model = user fields = ['first_name', 'last_name', 'email', 'username'] def clean_email(self): email = self.cleaned_data['email'] homecoming email def clean(self): cleaned_data = super(djangouserform, self).clean() email = self.cleaned_data['email'] username = self.cleaned_data['username'] if user.objects.exclude(username=username).filter(email=email).exists(): if not self._errors.has_key('email'): django.forms.util import errorlist self._errors['email'] = errorlist() self._errors['email'].append('email used user') homecoming cleaned_data

the function works, if seek save form empty email field error: keyerror @ /accounts/user/change/ 'email' . have self.fields['email'].required = true, , expecting django come "required" error. know im doing wrong?

try this:

def clean(self): cleaned_data = super(djangouserform, self).clean() if not self._errors: email = self.cleaned_data['email'] username = self.cleaned_data['username'] if not user.objects.exclude(username=username).filter(email=email).exists(): homecoming cleaned_data else: django.forms.util import errorlist self._errors['email'] = errorlist() self._errors['email'].append('email used user')

django django-forms

No comments:

Post a Comment