标签: flask-admin

flask-admin form_choices 中的多项选择

好吧,我最近接触了flask-admin,但我不知道如何解决这个问题。我知道我可以form_choices通过指定元组列表来限制文本字段的可能值。无论如何,form_choices允许一次只选择一个值。如何指定在某些情况下我可能需要以逗号分隔的值列表?

我试过这个解决方法:

form_args = {
    'FIELD': {
        'render_kw': {"multiple": "multiple"},
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,即使网页上实际出现了多选输入,也只会保存第一个值。

EIDT 05/13/2017

通过使用flask-admin,我为我的问题找到了两种可能的(部分)解决方案,它们都有特定的缺点。

1)第一个处理使用 Select2TagsField

from flask_admin.form.fields import Select2TagsField
...
form_extra_fields = {
    'muri': Select2TagsField()
}
Run Code Online (Sandbox Code Playgroud)

使用此方法可以轻松实现普通输入文本的选择菜单,即使目前我不明白如何将选项传递给 Select2TagsField。它可以很好地作为一种多自由文本输入。但是,据我所知,不可能配对 Select2TagsField 和 form_choices

2)第二个有点长,但它提供了对代码的更多控制(至少我认为)。仍然暗示使用form_choices,但这次与on_model_change

form_args = {
    'FIELD': {
        'render_kw': {"multiple": "multiple"},
    }
}
form_choices = {'FIELD': [
    ('1', 'M1'), ('2', 'M2'), ('3', 'M3'), ('4', 'M4')
]}
...
def on_model_change(self, form, model, is_created):
    if len(form.FIELD.raw_data) > 1:
        model.FIELD = ','.join(form.FIELD.raw_data)
Run Code Online (Sandbox Code Playgroud)

尽管是前一种,但该解决方案允许映射选择并且在将数据添加到模型时运行良好,但在编辑时会出现一些问题。每当我打开编辑对话框时,FIELD 都是空的。如果我查看发送到表单的数据( …

flask flask-admin

6
推荐指数
2
解决办法
4517
查看次数

导入错误:无法导入名称“db”

在此处输入图片说明

我正在将烧瓶管理员添加到预先存在的烧瓶样板项目中。我已经能够在https://github.com/kc1/flask-base (SCREENSHOT) 上运行基本项目。我现在需要添加模型视图来添加基本的 CRUD 功能。为此,我将代码更改为:

adm = Admin(app,name='flaskadmin')
from app.models import User
adm.add_view(ModelView(User, db.session))
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

你可以看到它有效。但是如果我在 app/init 顶部导入 User 模型和其余的导入,我会得到:

Traceback (most recent call last):
  File "...flask-base/manage.py", line 10, in <module>
    from app import create_app, db
  File "E:\ENVS\r3\flask-base\app\__init__.py", line 17, in <module>
    from app.models import User
  File "E:\ENVS\r3\flask-base\app\models\__init__.py", line 6, in <module>
    from .user import *  # noqa
  File "E:\ENVS\r3\flask-base\app\models\user.py", line 7, in <module>
    from .. import db, login_manager
ImportError: cannot import name 'db'
Run Code Online (Sandbox Code Playgroud)

为什么?

python flask flask-admin

6
推荐指数
1
解决办法
1万
查看次数

Flask SQLAlchemy:如何添加依赖于另一个表的列?

我的 SQLAlchemy 数据库中有三个表(使用 Flask SQLAlchemy):产品、产品变体和订单。我想在订单中查看包含哪些产品及其变体。

它适用于关系/外键,但主要问题是:如果我将产品添加到订单中,我仍然可以添加其他产品的变体(使用 Flask-Admin,或仅使用 Flask shell)。

所以,主要问题是:如何在表之间创建连接,以便只有当它们是订单产品的变体时才能添加变体?谢谢 :)

另一个解决方案:如何将列添加到 Orders 表,以便根据变体 ID 从 Product 表中获取产品名称?我尝试使用column_property, Post.query.get(variation_id), variation.parent_id, backhrefvariation.origin_product但没有任何成功:)

我的模型:

产品(如三星 Galaxy 7)

class Product(db.Model):

    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(120), index=True)
    brand = db.Column(db.String(120))
    variations = db.relationship('Variation', backref='origin_product', lazy='dynamic')
    orders = db.relationship('Order', backref='product_in_order', lazy='dynamic')
Run Code Online (Sandbox Code Playgroud)

产品变化(如三星 Galaxy 7 Blue 32GB)

class Variation(db.Model):

    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(120), index=True)
    price = db.Column(db.Integer)
    product_id = db.Column(db.Integer, db.ForeignKey('product.id')) …
Run Code Online (Sandbox Code Playgroud)

python sqlalchemy flask flask-sqlalchemy flask-admin

6
推荐指数
1
解决办法
3357
查看次数

为什么flask-admin要求mongoengine的ListField具有字段类型?

我正在尝试使用flask-admin,这看起来非常简单,但我有一个问题.

我在集合中有一个字段,定义为a ListField(),具有None列表字段类型的隐式类型.我没有为该字段定义类型的原因是因为我保留了一个列表列表,并且没有其他优雅的方式(我发现)用mongoengine来实现这一点.

但是flask-admin不会让我定义这样一个字段,错误是ListField "movements" must have field specified for model.

有没有解决的办法?

python flask flask-admin

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

flask-admin:将 inline_models 渲染为列表视图?

我有一个Motion模型,里面有很多Votes. 我将投票显示为inline_modelin flask-admin。是否可以像list_view模板一样将投票呈现为表格?而不是这样:

inline_models 列表

python flask flask-admin

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

如何在flask-admin中导出具有关系的列

我在将与其他人的关系的表格导出到 csv 时遇到问题,而在“简单”中运行良好。我必须添加一些导出的基础吗?例如,这是 db.Model:

class Categoria(db.Model):
    __tablename__ = 'categorie'
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    categoria = db.Column(db.String(30), primary_key=True)
    tipo_id = db.Column(db.Integer, db.ForeignKey('tipi.id'), primary_key=True)
    tipo = db.relationship('Tipo', backref='categorie')
Run Code Online (Sandbox Code Playgroud)

这是 ModelView

class CategorieAdmin(sqla.ModelView):
    column_display_pk = True
    can_export = True
    export_types = ['xls']
    list_columns = ['categoria', 'tipo']
Run Code Online (Sandbox Code Playgroud)

错误生成是: Exception: Unexpected data type <class '__main__.Tipo'>

感谢帮助

python csv export flask-admin

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

Flask-Admin 找不到反向关系

我已经有一个使用我的 SQLAlchemy 模型的应用程序,我现在正在尝试在顶部添加一个 Flask 管理网站来管理数据库中的一些数据。这个模型已经在整个现有应用程序中设置和工作,所以我知道关系配置正确。在我的数据库中,data_package 表对供应商表有一个 FK,这已作为关系添加。但是,当我创建一个烧瓶模型视图以允许编辑 data_package 时,我收到了错误:

例外:找不到模型的反向关系

我添加了下面代码的一个子集,还有更多的列和逻辑,但这是我必须尝试和测试问题修复程序的最低限度。问题发生是因为我添加了inline_models = (Supplier, )这是我需要的,因为我想选择允许更改数据包的供应商。

抛出异常的代码行是https://github.com/flask-admin/flask-admin/blob/master/flask_admin/contrib/sqla/form.py#L558。这样做的原因是关系方向被定义为 ONETOMANY,并且有一个检查以确保方向是 MANYTOONE 或 MANYTOMANY

Base = declarative_base()


class Supplier(Base):
    __tablename__ = 'supplier'
    id = Column(Integer, primary_key=True)
    name = Column(String(100), nullable=False)

class DataPackage(Base):
    __tablename__ = 'data_package'
    id = Column(Integer, primary_key=True)
    name = Column(String(100), nullable=False)

    supplier_id = Column(Integer, ForeignKey('supplier.id'), index=True, nullable=False)
    supplier = relationship("Supplier", backref='packages')

class DataPackageAdminView(ModelViewOnly):
    form_columns = ['name', 'supplier']
    inline_models = (Supplier,)

def create_app():
    settings.configure_orm()

    app = Flask(__name__)
    app.config.from_pyfile('config.py')

    @app.route('/')
    def …
Run Code Online (Sandbox Code Playgroud)

sqlalchemy flask flask-sqlalchemy flask-admin

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

Flask 管理员将 inline_models 显示为列表

我尝试使用 inline_models 创建 Flask-Admin 视图。

这有效,但它逐项呈现内联项。

class MyViewFeatureEngineering(sqla.ModelView):
    inline_models = ((Feature_columns),)
Run Code Online (Sandbox Code Playgroud)

但我想将其显示为列表。

它可以是可编辑的,也可以是只读的,为几列设置了 column_editable_list。

这是否可以通过 Flask-Admin 实现,或者现在是切换到完全自定义模板的时候了吗?到目前为止,似乎几乎所有东西都可以根据自己的需要进行覆盖。

谢谢

python flask flask-sqlalchemy flask-admin

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

如何在 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 上的删除逻辑?

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

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

提前致谢!

python flask-admin

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

标签 统计

flask-admin ×10

flask ×8

python ×8

flask-sqlalchemy ×3

sqlalchemy ×2

csv ×1

export ×1