2017-03-20 10 views
0

私の電子メールは、 "ac.uk"これはnulll djangoすることはできません..?

で終了しなければならないので、私は形で

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') 

と私の見解を、この1を置きます。

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}) 

は、私はそれが働いている、MyUserCreationFormを削除すると、私はやるとき、それは... ではなく、また、それはこのフィールドがnull ....

はplzは私を助けることができないと述べました。

+0

メタクラス内での '__init__'の使用は何ですか? –

+0

これはウィジェット用です.. – user7718204

答えて

1

クリーンメソッドの値を返す必要があります。

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

ああyeeeあなたの右の感謝! – user7718204

+0

それがあなたを助けた場合、答えを受け入れることを忘れないでください。 –

関連する問題