在基本上具有两个具有基本关系的属性的烧瓶应用中,例如:
models.py
from . import db
class ProjectModel(db.Model):
__tablename__ = "projectmodels"
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(50))
projects = db.relationship("Project", backref="projectmodel", lazy="select")
class Project(db.Model):
__tablename__ = "projects"
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(50))
project_model_id = db.Column(db.Integer, db.ForeignKey("projectmodels.id"), nullable=False)
创建对象时将有一个依赖数据库。ProjectwtformsSelectFieldprojectmodels
我的解决方案是定义一个函数,返回一个 :listSelectField[choices]
forms.py
from . import db
from wtforms import *
def projectmodels():
models = ProjectModel.query.all()
models_l = list()
for model in models:
models_l.append((str(model.id), model.name))
return models_l
class AddProjectForm(Form):
name = StringField(label="Project Name")
project_model = SelectField("Project Model",
choices=projectmodels())
在 Flask 应用运行时,在应用运行之前列出数据库中的所有对象。但在该会话期间,如果添加了任何其他项目模型,则在重新运行应用之前,它不会列出它们。SelectField
让所有这些形式在 routes.py 和部分中工作可以解决这个问题,但我想这不是最好的解决方案。@app.route
解决方案是什么?
HUWWW
相关分类