Flask-AppBuilder 如何在创建时设置主键?
Flask-AppBuilder how to set primary key on create?
我的用户应该能够为我的 table 创建新行,但是当我在 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]
现在,当我 运行 应用程序时,我可以在视图中看到“id”字段 http://127.0.0.1:5000/catalogueview/list/
。
然而,当我在 http://127.0.0.1:5000/catalogueview/show/myexamplecatalogue
进入详细视图时,主键字段“id”被隐藏,使用 http://127.0.0.1:5000/catalogueview/add
创建新条目时也会发生同样的情况,然后按照说明失败以上。
如何阻止 Flask-AppBuilder 隐藏我的主键并成功创建新条目?
正如@IljaEverilä 所建议的,这可以使用“edit_columns”属性添加:
class CatalogueView(ModelView):
datamodel = SQLAInterface(Catalogue)
label_columns = {'label':'Name', }
list_columns = ['id', 'label', 'type']
related_views = [ClassifiedView]
edit_columns = ['id', 'label', 'type']
我的用户应该能够为我的 table 创建新行,但是当我在 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]
现在,当我 运行 应用程序时,我可以在视图中看到“id”字段 http://127.0.0.1:5000/catalogueview/list/
。
然而,当我在 http://127.0.0.1:5000/catalogueview/show/myexamplecatalogue
进入详细视图时,主键字段“id”被隐藏,使用 http://127.0.0.1:5000/catalogueview/add
创建新条目时也会发生同样的情况,然后按照说明失败以上。
如何阻止 Flask-AppBuilder 隐藏我的主键并成功创建新条目?
正如@IljaEverilä 所建议的,这可以使用“edit_columns”属性添加:
class CatalogueView(ModelView):
datamodel = SQLAInterface(Catalogue)
label_columns = {'label':'Name', }
list_columns = ['id', 'label', 'type']
related_views = [ClassifiedView]
edit_columns = ['id', 'label', 'type']