Search code examples
pythonsqlalchemyflask-sqlalchemyflask-admin

Flask Admin field doesnt populate on create_form


I have a flask-sqlalchemy model and I want to pre-populate the id field with a default entry when creating a new entry.

I tried the following but it doesnt seem to work.

class Readergroup(BaseModel):
    __tablename__ = 'readergroups'
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String, nullable=False, unique=True)
    readers = db.relationship('Reader', secondary=readergroup_readers,  lazy='subquery')


class ReadergroupView(MyModelView):
    form_columns = ['id', 'name', 'readers']
    column_list = ['id', 'name', 'readers']
    column_labels = dict(id='id')
    column_searchable_list = ['id', 'name', 'readers.name']

 def create_form(self):
    form = super(MyModelView, self).create_form()
    form.id = 1
    return form

The form loads with id field empty.

I also tried to use get_create_form(self) instead but it also didnt help.


Solution

  • form.id is the form's field for the id column, form.id.data holds the field's value.

    def create_form(self):
        form = super(MyModelView, self).create_form()
        form.id.data = 1
        return form