Flask-Admin:使用 Peewee 自定义查询 Select 字段?
Flask-Admin: Custom Query for Select Field with Peewee?
我有一个带有 ForeignKeyField 的模型,它在 Flask-Admin 中呈现为 create/edit 表单中的 select 字段。我想使用自定义查询限制 select 字段中的选择,以便用户只能访问他们自己的源地址。
我发现的所有答案都指向 WTForms 的方向 QuerySelectField 但这仅适用于 SQLAlchemy 而我正在使用 Peewee。
这似乎是一件很常见的事情,那么还有其他方法吗?
class BulkMessage(BaseModel):
title = CharField(null=True)
source_address = ForeignKeyField(
SourceAddress,
related_name='bulk_messages',
null=True
)
其实很简单:
只需覆盖 ModelView
中的 edit_form
并使用 choices
中传递的查询创建字段,如 docs:
中所示
def edit_form(self):
form = model_form(BulkMessage)
form.source_address = SelectField(
'Source Address',
choices=[(sa.id, sa.title) for sa in SourceAddress.select().where(SourceAddress.owner == current_user.id)]
)
return form(obj=obj)
我有一个带有 ForeignKeyField 的模型,它在 Flask-Admin 中呈现为 create/edit 表单中的 select 字段。我想使用自定义查询限制 select 字段中的选择,以便用户只能访问他们自己的源地址。
我发现的所有答案都指向 WTForms 的方向 QuerySelectField 但这仅适用于 SQLAlchemy 而我正在使用 Peewee。
这似乎是一件很常见的事情,那么还有其他方法吗?
class BulkMessage(BaseModel):
title = CharField(null=True)
source_address = ForeignKeyField(
SourceAddress,
related_name='bulk_messages',
null=True
)
其实很简单:
只需覆盖 ModelView
中的 edit_form
并使用 choices
中传递的查询创建字段,如 docs:
def edit_form(self):
form = model_form(BulkMessage)
form.source_address = SelectField(
'Source Address',
choices=[(sa.id, sa.title) for sa in SourceAddress.select().where(SourceAddress.owner == current_user.id)]
)
return form(obj=obj)