django2.0 + xadmin2.0 只导出所勾选指定的数据,而非全部或则过滤后的所有数据

写在开头: 建议使用源码安装xadmin, 这样可以根据自己需求做更灵活的处理.
xadmin提供了非常好用的过滤筛选和导出数据的功能, 但是还是有一些鸡肋的地方.
比如我现在有个需求是只想要导出我所勾选的某一条或几条数据, 会发现xadmin没有这个功能, 而我在这里打勾选中其中几条, 或则选中当前页面所有数据, 它导出的都是全部数据或则筛选后果的所有符合筛选条件的(所有分页)数据,如图:
导出数据
所以这又需要自己增加功能, 在此我参考了这篇博文, 他使用的是导入原生django-admin来实现, 我也试过, 但是他这里也有小问题, 导出的时候对于导出选项(导出全部数据/导出所选数据/导出表头等)只能单选, 选择了导出所选数据, 就不能选择是否导出表头等:
在这里插入图片描述
而我在这之前又已经在xadmin的导出模块中集成了导出WORD的功能, 想要用这种方式实现,还要修改更多代码, 目前没有什么特殊需求, 还是决定在xadmin导出模块基础上修改.
这里又用到最笨的办法, 在代码中全局查找(我用的ide是pycharm)导出表头/导出全部数据, 可以找到在xadmin源码路径下文件xadmin/locale/zh_Hans/LC_MESSAGES/django.po
引用处
第895行可以看到, 引用导出表头的位置在文件xadmin/templates/xadmin/blocks/model_list.top_toolbar.exort.html----这个文件是xadmin模块组调用的网页, 而用同样方法寻找根据之前使用原生django-admin时所调用的网页, 发现是这个文件:xadmin/templates/xadmin/blocks/model_list.top_boolbar.importexport.export.html,
对比两个文件, 就会发现他们其实是相似的, 具体对比过程在此忽略, 我这里直接写出我在这里的修改结果(其中有fixme_code的地方,就是我添加修改的地方):

{
   # xadmin/templates/xadmin/blocks/model_list.top_toolbar.exort.html #}
{
   % load i18n %}
{
   % load staticfiles %}
<div class="btn-group export">
    {
   # fixme_code: 增加一个a标签,为 xadmin.plugin.importexport.js 提供id #}
  <a id="export-menu" class="dropdown-toggle btn btn-default btn-sm" data-toggle="dropdown" href="#">
    <i class="fa fa-share"></i> {
   % trans "Export" %} <span class="caret"></span>
  </a>
  <ul class="dropdown-menu" role="menu" aria-labelledby="dLabel">
    {
   % for et in export_types %}
      <li><a data-toggle="modal" data-target="#export-modal-{
   {et.type}}"><i class="fa fa-arrow-circle-down"></i> {
   % trans "Export" %} {
   {
   et.name}}</a></li>
    {
   % endfor %}
  </ul>

  {
   % for et in export_types %}
    <div id="export-modal-{
   {et.type}}" class="modal fade">
      <div class="modal-dialog">
        <div class="modal-content">
          <form method="get" action="">
          <div class="modal-header">
            <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
            <h4 class="modal-title">{
   % trans "Export" %} {
   {
   et.name}}</h4>
          </div>
          
  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值