我需要在CustomUserCreationForm Meta class
上添加一些验证约束。
我找不到在哪里以及如何添加它。我是否应该使用RegexValidator?
例如,我希望first_name
的最小长度为2,最大长度仅为30个字母。
from django import forms
from django.contrib.auth.forms import UserCreationForm, UserChangeForm
from django.forms import ModelForm
from .models import *
import datetime
class CustomUserCreationForm(UserCreationForm):
birth_date = forms.DateField(
label='birthdate',
widget=forms.DateInput(
attrs={'placeholder':'jj/mm/aaaa'}
)
)
introduction = forms.CharField(
label='introduction',
min_length=20,
max_length=500,
widget = forms.Textarea(
attrs={
'placeholder': 'Hey, I'm Wely.',
'cols':"40",
'rows':"5"
}
)
)
address1 = forms.CharField(
label='Address (1st line)',
min_length=2,
max_length=40,
widget = forms.TextInput(
attrs={'placeholder': '1st av. Lincoln'}
)
)
address2 = forms.CharField(
required=False,
label='Address (2nd line)',
min_length=0,
max_length=40,
widget = forms.TextInput(
attrs={'placeholder': 'Apt 3'}
)
)
registration_video = forms.CharField(
label='video',
widget = forms.FileInput(
attrs={'style': 'display:none'}
)
)
class Meta:
model = CustomUser
fields = ('first_name', 'last_name', 'email')
labels = {
'first_name': 'First name',
'last_name': 'Last Name',
'email': 'E-mail address'
}
widgets = {
'first_name': forms.TextInput(attrs = {'placeholder': 'Alicia'}),
'last_name': forms.TextInput(attrs = {'placeholder': 'Rodriguez'}),
'email': forms.EmailInput(attrs = {'placeholder': 'alicia@mail.com'}),
}
不使用RegexValidator。只有这样的改变。在这里,我们将minlength
和maxlength
添加到用于first_name字段的attr
中。
class Meta:
model = CustomUser
fields = ('first_name', 'last_name', 'email')
labels = {
'first_name': 'First name',
'last_name': 'Last Name',
'email': 'E-mail address'
}
widgets = {
'first_name': forms.TextInput(attrs = {'placeholder': 'Alicia','minlength':2,'maxlength':30}),
'last_name': forms.TextInput(attrs = {'placeholder': 'Rodriguez'}),
'email': forms.EmailInput(attrs = {'placeholder': 'alicia@mail.com'}),
}