Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Editing hybrid_property fields in flask-admin

I'm trying to have editable hybrid_property fields in flask-admin, but they're not showing up in the create or edit views. They do show up in the list view though. I've tried setting ignore_hidden=False but that isn't working. What am I doing wrong?

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))
like image 964
Jamie Bull Avatar asked Oct 23 '25 10:10

Jamie Bull


1 Answers

You can make it editable by adding test_column to form_extra_fields as follows:

from wtforms.fields import StringField

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

After saving test one with value 'test1' in admin panel:

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

test_column field is visible in edit and create views.

like image 139
stasiekz Avatar answered Oct 25 '25 01:10

stasiekz