【发布时间】:2014-12-15 22:09:19
【问题描述】:
我需要向 Mezzanine admin 添加一个自定义视图,这是一个不受模型支持但由 api 调用支持的统计和报告仪表板。
我有以下问题: 1.我在哪里添加自定义模块?这应该在我的应用程序中的 /theme 目录下还是在应用程序本身的根目录下? 2.如何注册此模块以显示左侧导航菜单中的视图?
【问题讨论】:
我需要向 Mezzanine admin 添加一个自定义视图,这是一个不受模型支持但由 api 调用支持的统计和报告仪表板。
我有以下问题: 1.我在哪里添加自定义模块?这应该在我的应用程序中的 /theme 目录下还是在应用程序本身的根目录下? 2.如何注册此模块以显示左侧导航菜单中的视图?
【问题讨论】:
我做了类似的事情,我想将 jqGrid 报告添加到管理界面。这是现有数据的报告(自定义产品视图),因此它没有自己的模型。此功能几乎内置于 Mezzanine 框架中,只添加了一些内容。
要让菜单项显示在左侧菜单中,需要在 settings.py 中添加为 ADMIN_MENU_ORDER。
ADMIN_MENU_ORDER = (
("Content", ("pages.Page", "blog.BlogPost", "generic.ThreadedComment", ("Media Library", "fb_browse"))),
(("Shop"), ("shop.Product", "shop.ProductOption", "shop.DiscountCode", "shop.Sale", "shop.Order",("Product Report", "product_report_view"))),
("Site", ("sites.Site", "redirects.Redirect", "conf.Setting")),
("Users", ("auth.User", "auth.Group")),
)
以下所有项目都是默认墨盒设置的一部分,“产品报告”部分除外。通过放置一个元组而不只是模型名称,第一个元素成为菜单项的名称,第二个元素是所使用的视图的名称。
("产品报告", "jqgrid_sample_view")
如果使用模型名称(如“shop.Product”,则使用 shop.Product 模型,并将模型名称用作菜单项。
在我的例子中,视图的目的是使用 jdqGrid 渲染一个 jqGrid,但您可以将其调整为您想要的任何视图。
def jqgrid_sample_view(request):
grid = ProductGrid
request.grid = grid
return render(request, 'product_report.html', {'grid': grid})
当点击“产品报告”链接时,视图生成的 HTML 被插入到 Mezzanine 管理页面的内容区域中。
【讨论】: