Flask-Admin:Peewee选择字段的自定义查询?

时间:2016-06-02 18:44:33

标签: python flask peewee flask-admin

我有一个带有ForeignKeyField的模型,该模型在Flask-Admin的创建/编辑表单中呈现为选择字段。我想使用自定义查询限制选择字段中的选项,以便用户只能访问自己的源地址。

所有答案都指出我已经找到了WTForms' QuerySelectField但这只适用于SQLAlchemy而且我使用的是Peewee。

这似乎是一件很常见的事情,所以其他方式呢?

class BulkMessage(BaseModel): title = CharField(null=True) source_address = ForeignKeyField( SourceAddress, related_name='bulk_messages', null=True )

1 个答案:

答案 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)