在flask-admin中编辑hybrid_property字段

时间:2019-09-10 16:17:01

标签: python flask flask-admin

我正在尝试在flask-admin中具有可编辑的hybrid_property字段,但是它们未显示在创建或编辑视图中。它们确实显示在列表视图中。我尝试设置ignore_hidden=False,但不起作用。我在做什么错了?

class TestTable(db.Model):
    __tablename__ = "test_table"
    id = db.Column(db.Integer, primary_key=True)

    _test_column = db.Column(db.String)

    @hybrid_property
    def test_column(self):
        return self._test_column

    @test_column.setter
    def test_column(self, test_column):
        self._test_column = test_column


class TestModelView(ModelView):
    ignore_hidden = False


admin = Admin(app, name="TestHybrid")
admin.add_view(TestModelView(TestTable, db.session))

1 个答案:

答案 0 :(得分:2)

您可以通过将 test_column 添加到 form_extra_fields 来使其可编辑,如下所示:

from wtforms.fields import StringField

class TestModelView(ModelView):
    form_extra_fields = {
        'test_column': StringField('test_column')
    }

在管理面板中保存值为'test1'的测试一后:

>>> TestTable.query.all()[-1]._test_column
'test1'
>>> TestTable.query.all()[-1].test_column
'test1'

test_column 字段在编辑和创建视图中可见。