我有一个带有ForeignKeyField的模型,该模型在Flask-Admin的创建/编辑表单中呈现为选择字段。我想使用自定义查询限制选择字段中的选项,以便用户只能访问自己的源地址。
所有答案都指出我已经找到了WTForms' QuerySelectField但这只适用于SQLAlchemy而且我使用的是Peewee。
这似乎是一件很常见的事情,所以其他方式呢?
class BulkMessage(BaseModel):
title = CharField(null=True)
source_address = ForeignKeyField(
SourceAddress,
related_name='bulk_messages',
null=True
)
答案 0 :(得分:1)
实际上非常简单:
只需覆盖edit_form
中的ModelView
,然后在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)