【问题标题】:flask wtforms-alchemy QuerySelectField ValueError: too many values to unpack (expected 2)flask wtforms-alchemy QuerySelectField ValueError: 太多值无法解包(预期 2)
【发布时间】:2019-01-25 15:33:18
【问题描述】:

我正在尝试使用 flask-wtfwtforms-alchemy 创建注册表单 在这个表单上,我尝试创建选择字段,它的值是从我的模型中查询的。 但我总是得到这个错误:

 ValueError: too many values to unpack (expected 2)

这是我的代码

from flask_wtf import FlaskForm
from wtforms_sqlalchemy.fields import QuerySelectField

def choose_domicile():
    return Domicile.query

class RegisterForm(FlaskForm):
    name = StringField('Name', validators=[DataRequired()])
    domicile = QuerySelectField(u'Domicile', query_factory=choose_domicile)


@app.route('/signup', methods=['GET', 'POST'])
    def signup():
        form = RegisterFormView()
        try:
            if form.validate_on_submit():
                new_user = Data(name=form.name.data, domicile=form.domicile.data)
                db.session.add(new_user)
                db.session.commit()
                return "Success"
        except:
            return "Failed"

        return render_template('signup.html', form=form)

这是我的signup.html

{% block content %}
<div class="container">

  <form class="form-signin" method="POST" action="/signup">
    <h2 class="form-signin-heading">Sign Up</h2>
    {{ form.hidden_tag() }}
    {{ wtf.form_field(form.name) }}
    {{ form.domicile }}
    <button class="btn btn-lg btn-primary btn-block" type="submit">Sign Up</button>
  </form>

</div>
{% endblock %}

我的包版本是 flask-wtf==0.14.2wtforms-alchemy==0.16.7

我已经尝试关注这个Why does Flask WTForms and WTForms-SQLAlchemy QuerySelectField produce too many values to unpack?,但我仍然对如何做到这一点感到困惑。

【问题讨论】:

    标签: python flask sqlalchemy flask-sqlalchemy flask-wtforms


    【解决方案1】:

    您可以定义如下函数,该函数可以作为 get_pk 参数传递。

    def get_pk(obj):
        return str(obj)
    

    然后进行以下更改

    domicile = QuerySelectField(u'Domicile', query_factory=choose_domicile, get_pk=get_pk)
    

    我假设您在模型类中定义了__str__,否则在 get_pk 中返回 pk

    【讨论】:

    • 另外,如果在模型类中定义了__repr__return repr(obj) 将起作用。
    猜你喜欢
    • 2018-06-29
    • 2021-07-05
    • 2017-08-29
    • 2018-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多