Skip to content

Actions-自定义视图 #14

@suoutsky

Description

@suoutsky

自定义视图

只需通过 @action装饰器

from flask_appbuilder.actions import action
from flask_appbuilder import ModeView
from flask_appbuilder.models.sqla.interface import SQLAInterface

class GroupModelView(ModelView):
    datamodel = SQLAInterface(Group)
    related_views = [ContactModelView]

    @action("myaction","Do something on this record","Do you really want to?","fa-rocket")
    def myaction(self, item):
        """
            do something with the item record
        """
        return redirect(self.get_redirect())

这将为该项目创建必要的权限,以便您可以将其包含或从特定角色中删除。 你可以很容易地在列表上实现一个大规模的删除选项。 只需将以下代码添加到您的视图。 这个例子会告诉F.A.B. 实现仅用于列表视图的动作,而不在show view上显示选项。 您可以通过禁用@action装饰器上的单个或多个参数来完成此操作。

@action("muldelete", "Delete", "Delete all Really?", "fa-rocket", single=False)
def muldelete(self, items):
    self.datamodel.delete_all(items)
    self.update_redirect()
    return redirect(self.get_redirect())

如果从列表视图中调用,F.A.B将调用你的函数和一个记录项列表。 或者如果从展示视图中调用一个项目。 默认情况下,将在列表视图和显示视图上执行一个操作,以便您的方法应该准备好处理记录列表或单个记录:

@action("muldelete", "Delete", "Delete all Really?", "fa-rocket")
def muldelete(self, items):
    if isinstance(items, list):
        self.datamodel.delete_all(items)
        self.update_redirect()
    else:
        self.datamodel.delete(items)
    return redirect(self.get_redirect())

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions