Flask 从sqlalchemy在烧瓶中调用wtforms

Flask 从sqlalchemy在烧瓶中调用wtforms,flask,sqlalchemy,wtforms,Flask,Sqlalchemy,Wtforms,我正在建立一个网站,有几个调查表格 class A(Form): name = Text('Name') class B(Form): name = Text('Name') class C(Form): name = Text('Name') etc... 我有一个模型可以保存所有这些表单的信息: class forms(db.Model): id = db.Column(db.Integer(), primary_key=True) name

我正在建立一个网站,有几个调查表格

class A(Form):
    name = Text('Name')

class B(Form):
    name = Text('Name')

class C(Form):
    name = Text('Name')

etc...
我有一个模型可以保存所有这些表单的信息:

class forms(db.Model):
    id = db.Column(db.Integer(), primary_key=True)
    name = db.Column(db.String(64), unique=True)
    description = db.Column(db.String(255))
    wtform = ???db.Column(db.String(255))??? # How to store a wtform [A, B, C, etc...]?
从菜单中,用户将选择一个特定的表单,并被引导到:

@app.route('/new/<int:id>', methods = ['GET', 'POST'])
@login_required
def new(id):

    data = forms.query.get(id)

    form = data.???wtform???  # How to call the particular wtform here? 

我不知道如何从sqlalchemy存储和调用wtform类。处理这种情况的最佳方法是什么?我应该为每个表单使用多个@app.route'/A'、@app.route'/B'、@app.route'/C'调用,这将增加冗余,还是可以将整个wtform类结构存储在数据库中?

您已经在代码中定义了表单,因此没有理由将它们存储在数据库中。存储要使用的表单的引用,然后根据引用实例化正确的表单

class FormDef(Base):
    __tablename__ = 'form_def'

    id = Column(Integer, primary_key=True)
    name = Column(String, nullable=False, unique=True)
    description = Column(String, nullable=False, default='')
    form_ref = Column(String, nullable=False)  # will be the name of the form class in this example

def get_form(instance):
    # given an instance of FormDef, get the form class with the name stored in form_ref
    from my_package import forms  # or wherever your forms are stored

    return getattr(forms, instance.form_ref)
另一方面,将表单类信息按行存储似乎不是解决您要解决的问题的正确方法