Django xadmin遇到的一些坑

好久不用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文件

Django xadmin遇到的一些坑_第1张图片

文件内容:

#!/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

Django xadmin遇到的一些坑_第2张图片

文件内容:

{% load i18n %}
导入

你可能感兴趣的:(python)