Как создать UniqueValidator для нескольких полей внутри FlaskForm - PullRequest
0 голосов
/ 11 ноября 2019

У меня есть 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 (сокращение от class) и roll вместе, чтобы комбинация этих 2 полей осталасьуникальный. На одном поле, таком как 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'
...