这是我用于注册新项目和更新现有项目的表单:
class ProjDataForm(FlaskForm):
proj_key = StringField("Project Key", validators=[DataRequired()])
...
def validate_proj_key(self, proj_key):
raise ValidationError("That Project Key already exists.")
这是我的模型:
class ProjectData(db.Model):
proj_key = db.Column(db.String(20), unique=True, nullable=False)
我添加了一个自定义验证,这样我就可以拥有一个唯一的“proj_密钥”来注册一个新项目
我所做的和仍然不起作用的事情(尽管我很可能犯了错误):
#forms
class ProjDataForm(FlaskForm):
...
new_proj = True
if new_proj == True:
def validate_proj_key(self, proj_key)
raise ValidationError("That Project Key already exists.")
#routes
form = ProjDataForm()
form.new_proj = False
if form.new_proj == False and form.validate_on_submit():
...
我知道我的设计不好,我应该重新设计它,但我只是想知道是否可以忽略自定义验证
new_pro
变量需要是类实例变量。这将允许您在创建ProjDataForm
实例时设置其状态,并可在validate_proj_key
方法中访问例如:
重写}方法,添加参数
ProjDataForm
{is_new_project
,如下所示:现在,您可以在自定义验证器中访问
is_new_project
实例变量:在路由中,使用适当的
is_new_project
值构造表单:相关问题 更多 >
编程相关推荐