【问题标题】:Using WTForms model_form() raises UserForm has no attribute 'hidden_tag'使用 WTForms model_form() 引发 UserForm 没有属性 'hidden_​​tag'
【发布时间】:2015-11-18 18:23:16
【问题描述】:

我正在尝试在 WTForms 中使用model_form 为给定模型自动生成Form;但是,当我使用它时,我收到以下错误:

UndefinedError: 'wtforms.ext.sqlalchemy.orm.UserForm object'
                 has no attribute 'hidden_tag'

我的代码如下所示:

from flask import Flask, render_template
from flask.ext.wtf import Form
from flask.ext.sqlalchemy import SQLAlchemy
from wtforms.ext.sqlalchemy.orm import model_form

app = Flask(__name__)
app.config.from_pyfile('app.cfg')
db = SQLAlchemy(app)

class User(db.Model):
    """Database model for SQLAlchemy."""
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(80), unique=True)

UserForm = model_form(User, Form)

@app.route('/')
def index():
    """Show subscription form."""
    form = UserForm()
    return render_template('form.html', form=form)

在模板中:

<form class="register" action="{{ url_for('form_subscribe') }}" method="POST" >
{{ form.hidden_tag() }}

我已经检查了几个地方,包括 other questions,但我找不到合适的最佳实践解决方案。

【问题讨论】:

    标签: python flask sqlalchemy wtforms flask-wtforms


    【解决方案1】:

    显然model_form 的参数顺序在版本[1] [2] 之间发生了变化,所以它应该被称为:

    UserForm = model_form(User, base_class=Form)
    

    【讨论】:

      【解决方案2】:

      你也可以试试这个解决方案

      from flask_wtf import FlaskForm
      from wtforms_alchemy import model_form_factory
      
      ModelForm = model_form_factory(FlaskForm)
      
      class User(db.Model):
          id = db.Column(db.Integer, primary_key=True)
          username = db.Column(db.String(80), unique=True)
      
      class UserForm(ModelForm):
          class Meta:
              model = User
      

      【讨论】:

        猜你喜欢
        • 2013-11-05
        • 2020-06-25
        • 2015-10-09
        • 1970-01-01
        • 2012-02-22
        • 2017-05-14
        • 2016-07-22
        • 2016-11-06
        • 2011-08-31
        相关资源
        最近更新 更多