Flask SelectField和PostgreSQL的空条目
我正在用PostgreSQL数据库构建一个Flask应用程序。我无法将新数据添加到数据库中。问题在于Flask SelectField。我已经将“nullable”属性设置为False,唯一的选择是“male”和“female”。查询生成一个错误“sqlalchemy.exc.IntegrityError”,表示提交前性别列有一个空值,但仍被选中 以下是models.py中的代码片段:Flask SelectField和PostgreSQL的空条目,postgresql,flask-sqlalchemy,Postgresql,Flask Sqlalchemy,我正在用PostgreSQL数据库构建一个Flask应用程序。我无法将新数据添加到数据库中。问题在于Flask SelectField。我已经将“nullable”属性设置为False,唯一的选择是“male”和“female”。查询生成一个错误“sqlalchemy.exc.IntegrityError”,表示提交前性别列有一个空值,但仍被选中 以下是models.py中的代码片段: class User(db.Model, UserMixin): __tablename__ = 'u
class User(db.Model, UserMixin):
__tablename__ = 'users'
id = db.Column(db.Integer, primary_key=True)
first_name = db.Column(db.String(50), nullable=False)
last_name = db.Column(db.String(50), nullable=False)
gender = db.Column(db.String(7))
email = db.Column(db.String(100), nullable = False, unique=True, index=True)
password_hash = db.Column(db.String(128))
这是标记的片段:
<div class="col-md-6">
<div class="form-group">
{{ form.gender.label() }}
{{ form.gender( class="form-control" ) }}
</div>
</div>
这是selectfield的屏幕截图:
我在什么地方出错了吗?表单中字段的定义是什么?您确定字段选择正在返回视图吗?换句话说,它是否显示在
request.form
中?这是我忘记从forms.py类注册表单(FlaskForm)添加的代码片段:。。。gender=SelectField('gender',validators=[DataRequired()],choices=[('male','male'),('memale','memale')],concurve=str)
在问题中添加了表单代码。您也验证了request.form
中显示的内容了吗?您的问题正是我想弄清这件事的原因。我注意到我没有在视图函数中执行form.gender.data
。这就是bug的来源。因此,在执行查询时,性别字段的输入为空。谢谢你,阿德里安!
class RegistrationForm(FlaskForm):
...
gender = SelectField('Gender', validators=[DataRequired()],
choices=[('male','Male'),('female','Female')], coerce=str)