1

このようなモデルを作成しました

class Users(models.Model):
    alpha_field = RegexValidator(regex=r'^[a-zA-Z]+$', message='Name can only contain letters')
    username = models.SlugField(max_length=50, unique=True)
    first_name = models.CharField(max_length=50, verbose_name='first Name', validators=[alpha_field])
    last_name = models.CharField(max_length=50, validators=[alpha_field])
    password = models.SlugField(max_length=50)

それからフォームを作成し、独自のエラーメッセージを表示したいと考えています。

クラスUsersForm(forms.ModelForm):

class Meta:
    model = Users
    widgets = {'password':forms.PasswordInput()}

def __init__(self, *args, **kwargs):
    super( UsersForm, self ).__init__(*args, **kwargs)
    self.fields[ 'username' ].widget.attrs[ 'placeholder' ]="Username"
    self.fields[ 'first_name' ].widget.attrs[ 'placeholder' ]="First Name"  
    self.fields[ 'last_name' ].widget.attrs[ 'placeholder' ]="Last Name"
    self.fields[ 'password' ].widget.attrs[ 'placeholder' ]="Password"
    self.fields['first_name'].label='first Name'
    self.fields['first_name'].error_messages = {'required': 'First Name is Required'}

ご覧のとおり、first_name フィールドが入力されていない場合は、既にエラー メッセージを作成しています。ただし、CharField がさらに多くのエラー メッセージを生成する可能性があることはわかっています (たとえば、送信された first_name が max_length より大きい場合)。発生する可能性のあるすべてのエラーメッセージに対してカスタムエラーメッセージが必要です。CharField フォームで発生する可能性のあるすべてのエラー メッセージのリストを確認できる場所はありますか?

また、first_name の詳細な名前が機能しません。詳細な名前を機能させることができれば、エラー メッセージ用のカスタム メッセージを作成する必要はありません。verbose_name が機能していないというスレッドを既に作成しており、機能していない正確な理由をまだ把握していないことに注意してください。verbose_name が機能し始めることができれば、それは素晴らしいことです。スレッドへのリンクは次のとおりです。

django verbose_name が機能しない

4

1 に答える 1

2

各フィールドのすべてのデフォルト エラー メッセージ キーに関するドキュメントは次のとおりです: https://docs.djangoproject.com/en/dev/ref/forms/fields/#built-in-field-classes

于 2013-09-26T22:45:14.647 に答える