标签: flask-admin

是否可以在 Flask Admin 的编辑视图中使用 column_formatters?

是否可以在 Flask Admin 的编辑视图中使用column_formatters ?当我添加以下代码时,它在列表表单视图中呈现“随机”。但是当它呈现编辑视图时,该字段是原始的,不使用column_formatters。我对其进行了调试,确实正在使用 _user_formatter 方法仅用于列表视图。

self.column_formatters = {'model': self._user_formatter,}

def _user_formatter(self,view, context, model, name):
    return "random"
Run Code Online (Sandbox Code Playgroud)

jinja2 flask flask-admin

5
推荐指数
0
解决办法
548
查看次数

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

我想使用 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__ …
Run Code Online (Sandbox Code Playgroud)

python flask flask-admin

5
推荐指数
1
解决办法
5831
查看次数

如何扩展 Flask-admin 模型编辑和创建模板?

根据flask-admin 文档,我可以通过创建文件templates/admin/index.html并扩展.flask-admin 来扩展主flask-admin 仪表板admin/master.html。HTML 看起来像这样:

{% extends 'admin/master.html' %}

{% block body %}
    <h1>HELLO</h1>
{% endblock body %}
Run Code Online (Sandbox Code Playgroud)

但我找不到任何有关如何扩展模型 CRUD 页面的信息:List、Edit 和 Create。我需要扩展“创建和编辑用户”页面,以便可以将 js 代码添加到表单模板中。

是否有一个模板可以像admin/master.html示例一样扩展?

python flask python-3.x flask-admin

5
推荐指数
1
解决办法
3888
查看次数

如何覆盖 Flask Admin 上的删除逻辑?

我一直在 Google 和 StackOverflow 上搜索这方面的内容。基本上,我想尝试覆盖 Flask-Admin 上的删除函数,以不实际删除记录,而是更新名为“deleted_by”和“deleted_on”的对象行。

我在 StackOverflow 上发现了一些问题,解释了如何使用 on_model_change 更改保存按钮上的逻辑,但没有人具体说明删除模型逻辑。我在文档中也没有找到任何与此相关的信息。谁能告诉我应该如何处理这个问题?

提前致谢!

python flask-admin

5
推荐指数
1
解决办法
2413
查看次数

我们如何使用Flask-Admin更新HSTORE字段?

如何HSTORE使用Flask-Admin 更新字段?

常规ModelView不会HSTORE在"编辑"视图中显示该字段.它没有任何表现.根本没有控制权.在列表视图中,它显示一个包含JSON表示法数据的列.这对我来说没问题.

使用自定义ModelView,我可以将HSTORE字段更改为TextAreaField.这将在编辑视图中以JSON表示法显示HSTORE字段.但我无法编辑/更新它.在列表视图中,它仍然以JSON表示法显示对象.看起来很好.

class MyView(ModelView):
    form_overrides = dict(attributes=fields.TextAreaField)
Run Code Online (Sandbox Code Playgroud)

当我尝试保存/编辑JSON时,我收到此错误:

sqlalchemy.exc.InternalError
InternalError: (InternalError) Unexpected end of string
LINE 1: UPDATE mytable SET attributes='{}' WHERE mytable.id = ...
                                         ^
 'UPDATE mytable SET attributes=%(attributes)s WHERE mytable.id = %(mytable_id)s' {'attributes': u'{}', 'mytable_id': 14L}
Run Code Online (Sandbox Code Playgroud)

现在 - 使用代码,我可以将一些内容保存到HSTORE字段中:

class MyView(ModelView):
    form_overrides = dict(attributes=fields.TextAreaField)
    def on_model_change(self, form, model, is_created):
        model.attributes = {"a": "1"}
        return
Run Code Online (Sandbox Code Playgroud)

这基本上覆盖了模型并将此对象放入其中.然后,我可以在列表视图和编辑视图中看到该对象.还不够好 - 我想保存/编辑用户输入的对象.

我试图解析并将表单中的内容保存到JSON中并退出.这不起作用:

class MyView(ModelView):
    form_overrides = dict(attributes=fields.TextAreaField)

    def on_model_change(self, form, …
Run Code Online (Sandbox Code Playgroud)

postgresql json flask hstore flask-admin

4
推荐指数
2
解决办法
2020
查看次数

Flask-Admin ModelView没有正确处理外键(空白下拉列表)

烧瓶初学者在这里.我有一个使用以下型号的Flask应用程序:

class Question(db.Model):
    __tablename__ = 'questions'
    id = db.Column(db.Integer, primary_key=True)
    text = db.Column(db.String, nullable=False)

class Answer(db.Model):
    __tablename__ = 'answers'
    id = db.Column(db.Integer, primary_key=True)
    text = db.Column(db.String, nullable=False)

    question_id = db.Column(db.Integer, db.ForeignKey('questions.id'))
    question = db.relationship("Question", backref="answers")
Run Code Online (Sandbox Code Playgroud)

我在我的应用程序中使用以下行启动管理员:

admin = Admin(app)
admin.add_view(ModelView(Question, db.session))
admin.add_view(ModelView(Answer, db.session))
Run Code Online (Sandbox Code Playgroud)

现在在答案模型的创建表单中,我有一个问题的下拉框,但它没有正确填充:

使用Flask-Admin回答创建表单

快速入门指南不包括与外键关系模型,虽然有一些可能的实现方式的例子,它们不是在所有的记录.我很难弄清楚这里真正需要什么以及它是如何工作的.

flask flask-extensions flask-admin

4
推荐指数
1
解决办法
2466
查看次数

排除flask-admin的创建/编辑表单中的特定字段

我的模型中有一些字段,我特别想要从我的模型中排除ModelView.

参考https://flask-admin.readthedocs.org/en/latest/api/mod_model/,我尝试使用form_exclude_columns例如排除这些特定字段,例如

class UserView(ModelView):

    form_exclude_columns = ('created', 'modified')
Run Code Online (Sandbox Code Playgroud)

但这似乎不起作用.

如何在my createeditModelView页面中轻松排除这两个字段?

flask flask-admin

4
推荐指数
1
解决办法
3134
查看次数

使用Flask-Admin的自定义列表视图

我有一个简单的模型Call,正在使用Flask-Admin创建/编辑/删除该模型的实例。

“呼叫”字段之一是音频文件的路径。我希望能够通过添加一些html代码在管理员中播放文件。我检查了模板flask_admin/templates/bootstrap3/admin/model/list.html,看来唯一要做的方法是在行的末尾添加一个单元格,这意味着扩展list.html,复制整个块list_row并添加我的单元格。

这是唯一的方法吗?还是有什么方法可以在音频播放器(基本上是html5)中添加“假”字段?

flask_admin / templates / bootstrap3 / admin / model / list.html

....

{% for c, name in list_columns %}
    <td class="col-{{c}}">
    {% if admin_view.is_editable(c) %}
        {% if form.csrf_token %}
            {{ form[c](pk=get_pk_value(row), value=get_value(row, c), csrf=form.csrf_token._value()) }}
        {% else %}
            {{ form[c](pk=get_pk_value(row), value=get_value(row, c)) }}
        {% endif %}
    {% else %}
        {{ get_value(row, c) }}
    {% endif %}
    </td>
{% endfor %}
<td>ADD MY CUSTOM CELL HERE?</td>
....
Run Code Online (Sandbox Code Playgroud)

models.py

class Call(db.Model):
    __tablename__ = 'calls'
    id …
Run Code Online (Sandbox Code Playgroud)

flask flask-admin

4
推荐指数
1
解决办法
3313
查看次数

在Flask-Admin列表视图中更改列的顺序

我有一个我的用户模型的Flask-Admin列表视图(ModelView),其中包括一些字段,自定义标题等.一切正常,我已经覆盖了默认列表模板,因此我可以匹配应用程序其余部分的样式.

但是,我的外键列出现在列表的开头,我需要移动它们,以便表格更有意义.

如何指定列的显示顺序?这是可能的,还是我只需要在列表模板中添加一些讨厌的条件?

python flask flask-admin

4
推荐指数
1
解决办法
2208
查看次数

Flask-Admin:应用过滤器路由到模型视图

我在Flask-Admin中有一个带过滤器的模型(例如,基于其他模型的外键)。

我想在前端应用管理器生成到模型视图的链接,并应用过滤器值。我注意到它添加?flt0_0=到中url,因此整个地址看起来有点:

http:/.../admin/model_view_<my model>/?flt0_0=<filter value>

生成这样的路线的最佳方法是什么?

python flask flask-admin

4
推荐指数
3
解决办法
947
查看次数