1

我有一个当前用户可以输入的字段,但我的表中有 ENUM,我想要它,所以他们只能选择一个或另一个作为选项。目前我正在尝试使用 base_filters,我已正确导入所有内容,只是无法正常工作

class FrankView(ModelView):
    datamodel = SQLAInterface(Frank)
    list_columns = ['id', 'name']
    add_columns = ['id', 'name']
    edit_columns = ['id', 'name']

    base_filters = [['name', FilterEqual, 'Maven']]
4

1 回答 1

1

不确定为什么要在这种情况下使用 base_filter,但 FAB 中 ENUM 的基本用法是这样的:

from flask_appbuilder import Model, ModelView
from sqlalchemy import Column, Integer, Enum
from flask_appbuilder.models.sqla.interface import SQLAInterface
from flask_appbuilder.models.sqla.filters import FilterEqual

class Frank(Model):
    __tablename__='frank'

    id = Column(Integer, primary_key=True, nullable=False)
    name_as_enum=Column(Enum('Maven','Not Maven'), nullable=False, default='Maven')

class FrankView(ModelView):
    datamodel = SQLAInterface(Frank)
    list_columns = ['id', 'name_as_enum']
    add_columns = ['id', 'name_as_enum']
    edit_columns = ['id', 'name_as_enum']

    base_filters = [['name_as_enum', FilterEqual, 'Maven']]

如果您想使用 base_filters,请不要忘记导入您尝试使用的过滤器。

于 2018-09-25T16:36:29.850 回答