繁体   English   中英

带有SelectField的WTForms帖子不起作用

[英]WTForms post with SelectField not working

我有一个表格,提交后,我不断收到以下错误。 我无法解决问题所在,但是我认为它与selectfield有关,因为这是我第一次使用它,以前也没有遇到任何问题。

这是我的表格:

class CampaignForm(Form):
    name = StringField('Campaign Name', validators=[DataRequired])
    start = DateField('Start', validators=[DataRequired], format='%d-%m-%Y')
    end = DateField('End', validators=[DataRequired], format='%d-%m-%Y')
    budget = IntegerField('Budget', validators=[DataRequired])
    customer_id = SelectField(
        'Customer', validators=[DataRequired], coerce=int)

这是我的观点,GET可以运行,但是在POST上我一直收到错误消息:

@app.route('/campaign/add', methods=['GET', 'POST'])
@login_required
def campaign_add():
    form = CampaignForm()

    form.customer_id.choices = [
        (customer.id, customer.name)
        for customer in current_user.account.customers]

    if form.validate_on_submit():
        campaign = Campaign(name=form.name.data,
                            start=form.start.data,
                            end=form.end.data,
                            budget=form.budget.data,
                            account_id=current_user.account_id,
                            customer_id=form.customer_id.data,
                            created_at=datetime.now(),
                            created_by=current_user.id,
                            updated_at=datetime.now(),
                            updated_by=current_user.id)

        db.session.add(campaign)
        db.session.commit()
        return redirect(url_for('campaigns'))

    return render_template('campaigns/add.html', form=form)

这是我遇到的错误,我无法找出错误所在。

Traceback (most recent call last):
  File "/home/lee/Code/fastplan/venv/lib/python3.4/site-packages/tornado/web.py", line 1309, in _execute
    result = self.prepare()
  File "/home/lee/Code/fastplan/venv/lib/python3.4/site-packages/tornado/web.py", line 2498, in prepare
    self.fallback(self.request)
  File "/home/lee/Code/fastplan/venv/lib/python3.4/site-packages/livereload/server.py", line 89, in __call__
    WSGIContainer.environ(request), start_response)
  File "/home/lee/Code/fastplan/venv/lib/python3.4/site-packages/flask/app.py", line 1820, in wsgi_app
    response = self.make_response(self.handle_exception(e))
  File "/home/lee/Code/fastplan/venv/lib/python3.4/site-packages/flask/app.py", line 1403, in handle_exception
    reraise(exc_type, exc_value, tb)
  File "/home/lee/Code/fastplan/venv/lib/python3.4/site-packages/flask/_compat.py", line 33, in reraise
    raise value
  File "/home/lee/Code/fastplan/venv/lib/python3.4/site-packages/flask/app.py", line 1817, in wsgi_app
    response = self.full_dispatch_request()
  File "/home/lee/Code/fastplan/venv/lib/python3.4/site-packages/flask/app.py", line 1477, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/home/lee/Code/fastplan/venv/lib/python3.4/site-packages/flask/app.py", line 1381, in handle_user_exception
    reraise(exc_type, exc_value, tb)
  File "/home/lee/Code/fastplan/venv/lib/python3.4/site-packages/flask/_compat.py", line 33, in reraise
    raise value
  File "/home/lee/Code/fastplan/venv/lib/python3.4/site-packages/flask/app.py", line 1475, in full_dispatch_request
    rv = self.dispatch_request()
  File "/home/lee/Code/fastplan/venv/lib/python3.4/site-packages/flask_debugtoolbar/__init__.py", line 124, in dispatch_request
    return view_func(**req.view_args)
  File "/home/lee/Code/fastplan/venv/lib/python3.4/site-packages/flask_login.py", line 758, in decorated_view
    return func(*args, **kwargs)
  File "/home/lee/Code/fastplan/src/fastplan/views.py", line 249, in campaign_add
    if form.validate_on_submit():
  File "/home/lee/Code/fastplan/venv/lib/python3.4/site-packages/flask_wtf/form.py", line 166, in validate_on_submit
    return self.is_submitted() and self.validate()
  File "/home/lee/Code/fastplan/venv/lib/python3.4/site-packages/wtforms/form.py", line 310, in validate
    return super(Form, self).validate(extra)
  File "/home/lee/Code/fastplan/venv/lib/python3.4/site-packages/wtforms/form.py", line 152, in validate
    if not field.validate(self, extra):
  File "/home/lee/Code/fastplan/venv/lib/python3.4/site-packages/wtforms/fields/core.py", line 200, in validate
    stop_validation = self._run_validation_chain(form, chain)
  File "/home/lee/Code/fastplan/venv/lib/python3.4/site-packages/wtforms/fields/core.py", line 220, in _run_validation_chain
    validator(form, self)
TypeError: __init__() takes from 1 to 2 positional arguments but 3 were given

问题是这样的行:

validators=[DataRequired]

应该是这样的

validators=[DataRequired()]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM