我有一个FlaskForm
,叫做AddStudentForm
,它像这样:
class AddStudentForm(FlaskForm):
first_name = StringField('First Name', validators=[DataRequired(), Length(min=3, max=24)])
last_name = StringField('Last Name', validators=[DataRequired(), Length(min=3, max=24)])
dob = DateField('Date of Birth', format='%d/%m/%Y', validators=[DataRequired()])
cls = SelectField('Class', choices=[(member.value, name) for name, member in Level.__members__.items()])
sec = SelectField('Section', choices=[('A', 'SEC-A'), ('B', 'SEC-B'), ('C', 'SEC-C')])
roll = IntegerField('Roll Number', validators=[DataRequired(), NumberRange(min=1, max=400)])
email = StringField('Email', validators=[DataRequired(), Email()])
submit = SubmitField('Add')
我想同时验证cls(类的缩写)和滚动字段,以使这两个字段的组合保持唯一。在像 email
这样的单个字段上,我可以轻松做到这一点,但是如何在多个字段上做到这一点呢?
我的关联代码如下(供参考):
AddStudentForm
中的唯一电子邮件验证程序(我希望多个字段同时使用类似的内容)
def validate_email(self, email):
stud = Student.query.filter_by(email=email.data).first()
if stud:
raise ValidationError('A student is already exists with same email! Please change your email.')
Enum
字段的级别cls
定义
class Level(Enum):
V = 'V'
VI = 'VI'
VII = 'VII'
VIII = 'VIII'