Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在Flask Admin中的编辑表单中添加额外字段?_Python_Flask_Flask Admin - Fatal编程技术网

Python 如何在Flask Admin中的编辑表单中添加额外字段?

Python 如何在Flask Admin中的编辑表单中添加额外字段?,python,flask,flask-admin,Python,Flask,Flask Admin,我想使用Flask Admin将字段项目添加到我的用户编辑表单中 为此,我尝试重写edit_form方法,将字段作为附加属性添加到表单中,但没有添加字段 我在Flask Admin中找不到任何关于如何向表单添加字段的清晰文档 有人能帮忙吗 class UserAdminView(ModelView): column_exclude_list = ['password',] form_widget_args = { 'password':{

我想使用Flask Admin将字段项目添加到我的用户编辑表单中

为此,我尝试重写edit_form方法,将字段作为附加属性添加到表单中,但没有添加字段

我在Flask Admin中找不到任何关于如何向表单添加字段的清晰文档

有人能帮忙吗

class UserAdminView(ModelView):
    column_exclude_list = ['password',]    
    form_widget_args = {
        'password':{
            'disabled': True
        }
    }

    def edit_form(self, obj=None):
    form = super(UserAdminView, self).edit_form(obj)

    form.projects = sqla.fields.QuerySelectMultipleField(
        "Projects",
        query_factory=lambda: db.session.query(Project).join(UserProjectRel) \
        .filter(UserProjectRel.user_id==obj.id),
    )

    return form


class User(db.Model):  
    __tablename__ = 'phaunos_user'

    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(20), unique=True, nullable=False)
    email = db.Column(db.String(120), unique=True, nullable=False)
    password = db.Column(db.String(255), nullable=False)
    is_admin = db.Column(db.Boolean, default=False, nullable=False)
    confirmed_on = db.Column(db.DateTime, nullable=True)


class UserProjectRel(db.Model):
    __tablename__ = 'user_project_rel'
    user_id = db.Column(db.Integer, db.ForeignKey('phaunos_user.id'), primary_key=True)
    project_id = db.Column(db.Integer, db.ForeignKey('project.id'), primary_key=True)
    user_role = db.Column(ENUM(Role), nullable=False)

    user = db.relationship('User', backref=db.backref('user_project_rel', cascade='all'))
    project = db.relationship('Project', backref=db.backref('user_project_rel', cascade='all'))

我首先必须覆盖get_edit_表单:

class UserAdminView(ModelView):
    column_exclude_list = ['password',]
    form_excluded_columns = ['annotations', 'user_project_rel']
    form_widget_args = {
        'password':{
            'disabled': True
        }
    }

    def get_edit_form(self):
        form = super(UserAdminView, self).get_edit_form()
        form.projects = sqla.fields.QuerySelectMultipleField("Projects")
        return form

    def edit_form(self, obj=None):
        form = super(UserAdminView, self).edit_form(obj)
        form.projects.query = db.session.query(Project).join(UserProjectRel) \
            .filter(UserProjectRel.user_id==obj.id).all()
        form.projects.data = form.projects.query
        return form

我首先必须覆盖get_edit_表单:

class UserAdminView(ModelView):
    column_exclude_list = ['password',]
    form_excluded_columns = ['annotations', 'user_project_rel']
    form_widget_args = {
        'password':{
            'disabled': True
        }
    }

    def get_edit_form(self):
        form = super(UserAdminView, self).get_edit_form()
        form.projects = sqla.fields.QuerySelectMultipleField("Projects")
        return form

    def edit_form(self, obj=None):
        form = super(UserAdminView, self).edit_form(obj)
        form.projects.query = db.session.query(Project).join(UserProjectRel) \
            .filter(UserProjectRel.user_id==obj.id).all()
        form.projects.data = form.projects.query
        return form
我认为您错过了BaseModelView类的属性,因此要添加项目输入:

我认为您错过了BaseModelView类的属性,因此要添加项目输入:


这将向编辑和创建表单添加一个字段。这将向编辑和创建表单添加一个字段。