A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 丁柳 于 2019-4-11 14:26 编辑

1、在/site-packages/xadmin/plugins中新增excel.py文件

文件内容:
[Python] 纯文本查看 复制代码
import xadmin

from xadmin.views import BaseAdminPlugin, ListAdminView

from django.template import loader

from  xadmin.plugins.utils import get_context_dict

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)


注意:Django2.0以后rander_to_string的第二个参数必须为dict格式,导入了get_context_dict方法,将context转换

2、将execl.py插件注册到xadmin的plugins中,修改site-packages/xadmin/plugins的__init__.py,

3、创建导入模板
xadmin/excel/model_list.top_toolbar.import.html

文件内容:

[HTML] 纯文本查看 复制代码
{% load i18n %}

<div class="btn-group export">

  <a class="dropdown-toggle btn btn-default btn-sm" data-toggle="dropdown" href="#">

    <i class="icon-share"></i> 导入 <span class="caret"></span>

  </a>

  <ul class="dropdown-menu" role="menu" aria-labelledby="dLabel">

      <li><a data-toggle="modal" data-target="#export-modal-import-excel"><i class="icon-circle-arrow-down"></i> 导入 Excel</a></li>

  </ul>

    <script>

        function fileChange(target){

            var imgName = document.all.submit_upload.value;

            var ext,idx;

            if (imgName == ''){

                document.all.submit_upload_b.disabled=true;

                alert("请选择需要上传的 xls 文件!");

                return;

            } else {

                idx = imgName.lastIndexOf(".");

                if (idx != -1){

                    ext = imgName.substr(idx+1).toUpperCase();

                    ext = ext.toLowerCase( );

                    if (ext != 'xls' && ext != 'xlsx'){

                        document.all.submit_upload_b.disabled=true;

                        alert("只能上传 .xls 类型的文件!");

                        return;

                    }

                } else {

                    document.all.submit_upload_b.disabled=true;

                    alert("只能上传 .xls 类型的文件!");

                    return;

                }

            }

        }

    </script>

    <div id="export-modal-import-excel" class="modal fade">

      <div class="modal-dialog">

        <div class="modal-content">

          <form method="post" action="" enctype="multipart/form-data">

              {% csrf_token %}

          <div class="modal-header">

            <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>

            <h4 class="modal-title">导入 Excel</h4>

          </div>

          <div class="modal-body">

               <input type="file" name="excel" id="submit_upload">

          </div>

          <div class="modal-footer">

            <button type="button" class="btn btn-default" data-dismiss="modal">{% trans "Close" %}</button>

            <button class="btn btn-success" type="submit" id="submit_upload_b"><i class="icon-share"></i> 导入</button>

          </div>

          </form>

        </div>

      </div>

    </div>

</div>


4.在Django项目的配置文件INSTALLED_APP中添加xadmin和crispy_froms
5.在应用中新建adminx.py文件,后台管理模型如需导入excel文件的,设置import_excel=True,则在该模型类的后台管理页面出现导入按钮



0 个回复

您需要登录后才可以回帖 登录 | 加入黑马