django admin - 如何覆盖在内联formset中添加新行

时间:2016-07-07 19:07:57

标签: django-admin

我使用Media类定制了我的内联模型。 我想自定义内联字段集来实现两件事:

  • 为每行添加一个按钮
  • 在按下“添加新行”时从javascript代码运行

我已经尝试重写tabular.html,无论我在哪里放置覆盖模板,它都没有任何区别。

从使用change_form.html我可以说我需要覆盖inline_admin_formset.opts.template,但我不知道如何。 有什么想法吗?

enter image description here

1 个答案:

答案 0 :(得分:0)

我明白了。

  1. 拷贝 C:\ Python27 \ LIB \站点包\ Django的\的contrib \ ADMIN \模板\ ADMIN \ edit_inline \ tabular.html 到您的模板文件夹以将其用作自定义模板
  2. 在您的管理代码中,指定模板的路径:
  3. class PurchaseInlineAdmin(admin.TabularInline):
        model = Purchase
        extra = 0
        template = "admin/my_app/shoppingcart/tabular.html"
    
    1. 修改自定义tabular.html。我只是展示了底部:
    2. <script type="text/javascript">
      function beep(){
        alert('beep');
      }
      
      (function($) {
        $("#{{ inline_admin_formset.formset.prefix }}-group .tabular.inline-related tbody tr").tabularFormset({
          prefix: "{{ inline_admin_formset.formset.prefix }}",
          adminStaticPrefix: '{% static "admin/" %}',
          addText: "{% blocktrans with inline_admin_formset.opts.verbose_name|capfirst as verbose_name %}Add another {{ verbose_name }}{% endblocktrans %}",
          deleteText: "{% trans 'Remove' %}"
        });
        $(".add-row a").click(beep);
      })(django.jQuery);
      </script>