Как проверить оба validate_fields в WTFFORMS в flask - PullRequest
0 голосов
/ 07 марта 2020
from flask_wtf import FlaskForm
from flask_wtf.file import FileField, FileAllowed
from flask_login import current_user
from wtforms import StringField, PasswordField, SubmitField, BooleanField, SelectField,IntegerField
from wtforms.validators import DataRequired, Length, Email, EqualTo, ValidationError
from gsapp.models import User, Date

YesNo_CHOICES=[('1', 'Yes'), ('2', 'No')]

class ReleaseForm(FlaskForm):
    release = StringField('Release', validators=[
                           DataRequired(), Length(min=2, max=3)])
    product = StringField('Product', validators=[DataRequired()])
    yesno = SelectField(label='Yes/No', choices=YesNo_CHOICES)
    duration = IntegerField(label='Duration',validators=[DataRequired()])
    pmfreq = StringField('PMF Required', validators=[DataRequired()])
    compreq = StringField('Components Required', validators=[DataRequired()])
    cestory = StringField('CE Story', validators=[DataRequired()])
    submit = SubmitField('Submit')


    def validate_product(self,product):
        date = Date.query.filter_by(product=product.data).all()
        if date:
            raise ValidationError(
                "You've already have added for the selected, Thank-you!")

    def validate_release(self,release):
        date = Date.query.filter_by(release=release.data).all()
        if date:
            raise ValidationError(
                "You've already have added for the selected, Thank-you!")

Здесь у меня есть две функции проверки, которая проверяет, находится ли она уже в БД. Но я хочу проверить, если оба вместе как комбинация, доступная в БД, не или-или.

Например: если я добавлю релиз = 50 и продукт PS1, а затем попробую, если я попробую релиз = 50 и продукт как XBOX1, это разрешит мне, если я снова не попытаюсь добавить те же продукты в тот же выпуск.

1 Ответ

0 голосов
/ 07 марта 2020

Параметр self является экземпляром формы, который позволяет получить доступ к любым значениям полей формы.

def validate_product(self,product):
    release_data = self.release.data
    date = Date.query.filter_by(product=product.data, release=release_data).all()
    if date:
        raise ValidationError(
            "You've already have added for the selected, Thank-you!")

def validate_release(self,release):
    product_data = self.product.data
    date = Date.query.filter_by(release=release.data, product=product_data).all()
    if date:
        raise ValidationError(
            "You've already have added for the selected, Thank-you!")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...