Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flask SelectField和PostgreSQL的空条目_Postgresql_Flask Sqlalchemy - Fatal编程技术网

Flask SelectField和PostgreSQL的空条目

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

我正在用PostgreSQL数据库构建一个Flask应用程序。我无法将新数据添加到数据库中。问题在于Flask SelectField。我已经将“nullable”属性设置为False,唯一的选择是“male”和“female”。查询生成一个错误“sqlalchemy.exc.IntegrityError”,表示提交前性别列有一个空值,但仍被选中

以下是models.py中的代码片段:

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)