2017-03-20 6 views
0

per E-Mail mit "ac.uk"das kann nicht nulll django ..?

so habe ich in Form

class MyUserCreationForm(UserCreationForm): 
    def clean_email(self): 
    if not self.cleaned_data['email'].endswith('ac.uk'): 
     raise forms.ValidationError('You need to use ac ID') 

UserCreationForm

class UserCreationForm(forms.ModelForm): 

password1 = forms.CharField(label='Password', widget=forms.PasswordInput(attrs={'placeholder': 'Password'})) 
password2 = forms.CharField(label='Password confirmation', widget=forms.PasswordInput(attrs={'placeholder': 'Password confirmation'})) 


class Meta: 
    model = MyUser 
    def __init__(self, auto_id='%s', *args, **kwargs): 
     super(Meta, self).__init__(*args, **kwargs) 
     self.fields['Mother_language'].choices = ('','Please choose ') + models.Language_list 
     self.fields['Mother_language'].choices = ('','Please choose ') + models.Language_list 
    widgets = { 
     'email': forms.TextInput(attrs={'size':30,'placeholder': 'Email'}), 
     'username': forms.TextInput(attrs={'size':30,'placeholder': 'UserName'}), 
     'status_message': forms.TextInput(attrs={'height':50,'placeholder': 'Write your message'}), 

    } 

    fields = ('email','username','Mother_language','Nationality','Wish_language','Profile_image','status_message') 

und meiner Meinung nach dieser einen beendet werden soll.

def register(request): 
    registered = False 
    if request.method == 'POST': 
    user_form = MyUserCreationForm(data=request.POST) 
    if user_form.is_valid():  



     user = user_form.save() 
     user.save() 

     if 'Profile_image' in request.FILES: 
       user.Profile_image = request.FILES['Profile_image'] 

       user.save() 
       registered = True 

    else: 
     print(user_form.errors) 

else: 
    user_form = MyUserCreationForm() 

return render(request, 
      'LanguageExchange/register.html', 
      {'user_form': user_form, 
      'registered': registered}) 

wenn ich entfernen MyUserCreationForm, es funktioniert, aber wenn ich das tue, ist es nicht ... und auch, so heißt dieses Feld nicht null sein kann ....

plz mir helfen.

+0

Was ist die Verwendung von "__init__" in der Meta-Klasse? –

+0

das ist für widget .. – user7718204

Antwort

1

Sie müssen den Wert von Ihrer sauberen Methode zurückgeben.

def clean_email(self): 
    email = self.cleaned_data['email'] 
    if not email.endswith('ac.uk'): 
    raise forms.ValidationError('You need to use ac ID') 
    return email 
+0

oh yeee du richtig danke! – user7718204

+0

Vergessen Sie nicht, die Antwort zu akzeptieren, wenn es Ihnen geholfen hat. –

Verwandte Themen