在Django中为Meta类添加modelForm验证约束



我需要在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。只有这样的改变。在这里,我们将minlengthmaxlength添加到用于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'}),
}

最新更新