如何将字符串模型字段转换为 Flask-Admin 中的 select 输入?
How can I turn a string model field into a select input in Flask-Admin?
我的 SQLAlchemy 模型中有一个字符串字段,我想在 Flask-Admin 中公开一个带有几个选项的 select 框,而不是标准文本字段。
class MyModel(db.Model):
id = db.Column(db.Integer, primary_key=True)
my_field = db.Column(db.String(128)) # Field I would like to be choices
class MyModelView(ModelView):
"""
Admin manager for MyModel
"""
# Which option should I use here?
def __init__(self):
super(MyModelView, self).__init__(MyModel, db.session)
结果是 form_overrides
和 form_args
的组合。 form_overrides
告诉表单使用 select 字段,form_args
允许您传递选项和其他选项。
class MyModel(db.Model):
id = db.Column(db.Integer, primary_key=True)
my_field = db.Column(db.String(128))
class MyModelView(ModelView):
"""
Admin manager for MyModel
"""
form_overrides = dict(
my_field=SelectField
)
form_args = dict(
my_field=dict(
choices=[
('choice_1', 'Choice 1'),
('choice_2', 'Choice 2')
]
)
)
def __init__(self):
super(MyModelView, self).__init__(MyModel, db.session)
您通过在模型视图中使用 'form_choices' 来实现此功能,如下例基于您问题中嵌入的代码说明:
class MyModel(db.Model):
id = db.Column(db.Integer, primary_key=True)
my_field = db.Column(db.String(128)) # Field I would like to be choices
class MyModelView(ModelView):
"""
Admin manager for MyModel
"""
form_choices = {
'my_field': [
('choice_1', 'Choice 1'),
('choice_2', 'Choice 2'),
('choice_3', 'Choice 3'),
('choice_4', 'Choice 4'),
('choice_5', 'Choice 5')
]
}
def __init__(self):
super(MyModelView, self).__init__(MyModel, db.session)
参考:
You can restrict the possible values for a text-field by specifying a
list of select choices:
form_choices = {
'title': [
('MR', 'Mr'),
('MRS', 'Mrs'),
('MS', 'Ms'),
('DR', 'Dr'),
('PROF', 'Prof.')
] }
我的 SQLAlchemy 模型中有一个字符串字段,我想在 Flask-Admin 中公开一个带有几个选项的 select 框,而不是标准文本字段。
class MyModel(db.Model):
id = db.Column(db.Integer, primary_key=True)
my_field = db.Column(db.String(128)) # Field I would like to be choices
class MyModelView(ModelView):
"""
Admin manager for MyModel
"""
# Which option should I use here?
def __init__(self):
super(MyModelView, self).__init__(MyModel, db.session)
结果是 form_overrides
和 form_args
的组合。 form_overrides
告诉表单使用 select 字段,form_args
允许您传递选项和其他选项。
class MyModel(db.Model):
id = db.Column(db.Integer, primary_key=True)
my_field = db.Column(db.String(128))
class MyModelView(ModelView):
"""
Admin manager for MyModel
"""
form_overrides = dict(
my_field=SelectField
)
form_args = dict(
my_field=dict(
choices=[
('choice_1', 'Choice 1'),
('choice_2', 'Choice 2')
]
)
)
def __init__(self):
super(MyModelView, self).__init__(MyModel, db.session)
您通过在模型视图中使用 'form_choices' 来实现此功能,如下例基于您问题中嵌入的代码说明:
class MyModel(db.Model):
id = db.Column(db.Integer, primary_key=True)
my_field = db.Column(db.String(128)) # Field I would like to be choices
class MyModelView(ModelView):
"""
Admin manager for MyModel
"""
form_choices = {
'my_field': [
('choice_1', 'Choice 1'),
('choice_2', 'Choice 2'),
('choice_3', 'Choice 3'),
('choice_4', 'Choice 4'),
('choice_5', 'Choice 5')
]
}
def __init__(self):
super(MyModelView, self).__init__(MyModel, db.session)
参考:
You can restrict the possible values for a text-field by specifying a list of select choices:
form_choices = { 'title': [ ('MR', 'Mr'), ('MRS', 'Mrs'), ('MS', 'Ms'), ('DR', 'Dr'), ('PROF', 'Prof.') ] }