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)