好久不用Django xadmin,近期用起来
环境:
系统:win10
IDE:pycharm
Django:2.1.4
xadmin2:2.0.1
python:3.7
1、增加数据导入插件
编辑 你的xadmin的插件库,具体参见官方文档https://xadmin.readthedocs.io/en/latest/make_plugin.html,这一部分网上文档很多,可以对比查看其它兄弟说明。
1、在%path%/site-packages/xadmin/plugins中新增excel.py文件
文件内容:
#!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2018/12/7 12:31 # @Author : kevinliu # @Site : # @File : excel.py # @Software: PyCharm import xadmin from xadmin.views import BaseAdminPlugin, ListAdminView from django.template import loader from xadmin.plugins.utils import get_context_dict # excel 导入 class ListImportExcelPlugin(BaseAdminPlugin): import_excel = False def init_request(self, *args, **kwargs): return bool(self.import_excel) def block_top_toolbar(self, context, nodes): nodes.append( loader.render_to_string('xadmin/excel/model_list.top_toolbar.import.html', get_context_dict(context))) xadmin.site.register_plugin(ListImportExcelPlugin, ListAdminView) if __name__ == "__main__": pass
注意:Django2.0以后rander_to_string的第二个参数必须为dict格式,所以这里与网上其它兄弟不同之处是导入了get_context_dict方法,将context转换,解决一个BUG问题.
2、将execl.py插件注册到xadmin的plugins中,修改%path%/site-packages/xadmin/plugins的__init__.py,
PLUGINS中新增excel
3、创建导入模板
%PATH%/xadmin/excel/model_list.top_toolbar.import.html
文件内容:
{% load i18n %}