我創建了一個自定義django用戶帳戶創建系統,該系統使用電子郵件using this example。我想將電子郵件和密碼都顯示爲「此字段爲必填」的錯誤消息合併爲一個錯誤消息,其中顯示「電子郵件和密碼字段不能留空」Django:合併字段錯誤消息
回答
您可以爲您的型號編寫Model.clean
class MyCustomUser(AbstractBaseUser):
usermail = models.EMailField(.......)
def clean(self):
if not self.usermail and not self.password:
raise ValidationError({'usermail': 'Mail address and Password are required!'})
這會引發驗證錯誤,指向您的usermail
字段。
你應該繼承forms.Form
而不是forms.ModelForm
UserCreationForm
,定義了它的電子郵件/密碼字段與required=False
和clean()
方法檢查這兩個領域。
事情是這樣的:
class UserCreationForm(forms.Form):
email = forms.EmailField(required=False)
password = forms.CharField(required=False, widget=forms.PasswordInput)
def clean(self):
email = self.cleaned_data.get('email')
password = self.cleaned_data.get('password')
if not (email and password):
raise forms.ValidationError(
'email and password fields cannot be left blank')
def save(self, commit=True):
user = User(email=self.cleaned_data['email'])
user.set_password(self.cleaned_data['password'])
if commit:
user.save()
return user
重寫字段也將覆蓋它們的max_length參數。 '__init__'方法更好: super(UserCreationForm,self).__ init __(* args,** kwargs); self.fields ['email']。required = False; self.fields ['password']。required = False – imposeren
如果您使用的是django 1.7,那麼使用self.add_error會更好。例如:'self.add_error(ValidationError(u'Email and password fields can not be left blank',code ='blank-fields'))' – imposeren
- 1. Django字段錯誤消息
- 2. Django錯誤消息
- 3. 顯示唯一字段的Django錯誤消息
- 4. Django:獲取表單字段的錯誤消息
- 5. Django將默認錯誤消息放入一個字段
- 6. Django更改表單字段錯誤消息
- 7. Django消息屬性錯誤
- 8. Django permission_required錯誤消息?
- 9. Django彈出錯誤消息
- 10. Django的消息錯誤
- 11. Django擴展錯誤消息
- 12. simple_form日期字段的錯誤消息
- 13. DRF:自定義字段錯誤消息
- 14. Django字段錯誤
- 15. 防止字段爲空時提交併顯示錯誤消息
- 16. 在rails中check_box字段'合併'錯誤
- 17. 錯誤消息爲所有字段顯示相同的錯誤
- 18. Android setError():視覺上指向錯誤字段的錯誤消息
- 19. Azure B2C - 錯誤字段的錯誤消息警報
- 20. Django:字段錯誤未知字段
- 21. django字段E300錯誤threadcomments
- 22. Django - 裝飾者和錯誤消息
- 23. Django的:改變MinLengthValidator錯誤消息
- 24. 解析錯誤消息給Django模板?
- 25. Django:如何覆蓋unique_together錯誤消息?
- 26. django模型保存錯誤消息
- 27. 標準django表單錯誤消息
- 28. django登錄不顯示錯誤消息
- 29. Django Ajax返回錯誤消息
- 30. Django:更改validate_ipv46_address的錯誤消息
這是行不通的 - usermail /密碼'UserCreationForm'所以「需要該領域的」異常需要將拋出他們。 – catavaran