如何flask-admin从数据库添加动态form_choices

时间:2019-05-10 10:23:16

标签: flask flask-admin

如何从其他ModeView动态加载form_choices。

我的代码

class OnBoarding(db.Model):
    __tablename__ = 'on_boarding'
    status = db.Column(db.String(256))


class OptionStatus(db.Model):
    __tablename__ = 'option_status'
    id = db.Column(db.BigInteger, primary_key=True, autoincrement=True)
    status = db.Column(db.String(256))


class OnBoardingAdminView(ModelView):
    form_choices = {
        'status': [(m.status, m.status for m in OptionStatus.query.all())],
    }

admin.add_view(ModelView(OptionStatus, db.session, category='Option'))
admin.add_view(OnBoardingAdminView(OnBoarding, db.session))


您的帖子似乎主要是代码;请添加更多详细信息。 ????

1 个答案:

答案 0 :(得分:0)

由于您的选择不是静态的,需要进行数据库查询,因此应在scaffold_formcreate_form / edit_form中填充它们。

class MyView(BaseModelView):
    def scaffold_form(self):
        form = super(MyView, self).scaffold_form()

        choices = ((m.status, m.status) for m in OptionStatus.query.all())
        form.status.choices = choices

        return form