【发布时间】:2020-12-21 16:02:18
【问题描述】:
我的用户应该能够为我的表创建新行,但是当我在 Flask-AppBuilder 中使用加号按钮时,主键不显示,并且生成的 SQL INSERT 语句缺少主键,这显然失败了.
如何让 Flask-AppBuilder 显示新行的主键?
示例
models.py
class Catalogue(Model):
id = Column(String(200), primary_key=True)
label = Column(String(200), nullable=False)
type = Column(Enum("UserGroup","ApplicationSystem","Feature","EnterpriseFunction","OrganizationalUnit"), nullable=False)
views.py
class CatalogueView(ModelView):
datamodel = SQLAInterface(Catalogue)
label_columns = {'label':'Name', }
list_columns = ['id', 'label', 'type']
related_views = [ClassifiedView]
现在,当我运行应用程序时,我可以在视图http://127.0.0.1:5000/catalogueview/list/ 中看到“id”字段。
但是,当我在http://127.0.0.1:5000/catalogueview/show/myexamplecatalogue 进入详细视图时,主键字段“id”被隐藏,使用http://127.0.0.1:5000/catalogueview/add 创建新条目时也会发生同样的情况,然后如上所述失败。
如何阻止 Flask-AppBuilder 隐藏我的主键并成功创建新条目?
【问题讨论】:
-
也许可以尝试使用
add_columns覆盖添加表单中显示的内容:flask-appbuilder.readthedocs.io/en/latest/… -
@IljaEverilä:但是为什么一开始就缺少像主键这样重要的东西呢?没有它就不可能创建条目。
-
大多数时候人们使用自动生成的代理键,所以生成代理键完全取决于数据库,让人们手动定义它甚至可能有害。
-
Übrigens habe ich keine Erfahrung mit Flask-Appbuilder.
-
@IljaEverilä 感谢您的解释,我习惯了语义网,其中主键是手动定义的 URI,我将研究 add_columns 方法。
标签: python sqlalchemy flask-appbuilder