将css类添加到django inlines fieldset

时间:2013-11-05 00:10:52

标签: django

我想为ModelAdmin类中指定的内联指定字段集(或父div)的css类,类似于为fieldsets指定的内联。例如:

class Set2Inline(admin.TabularInline):
    ...

class MyModelAdmin(admin.ModelAdmin):
    fieldsets = [
                ('Set1', {'fields': ['number', 'name', 'etc'], 'classes': ['toggle']})
                ]
    inlines = [Set2Inline]

有没有办法以类似的方式为“内联”添加类,例如:

inlines = [
              'Set2', {Set2Inline, 'classes': ['toggle']}
          ]

如果类附加到内联的字段集或其父div,则无关紧要。重要的是能够以与每个字段集相似的方式为每个内联指定唯一的类。有没有办法做到这一点?如果它可以在Set2Inline类中完成,也可以。

2 个答案:

答案 0 :(得分:2)

就像彼得的评论所暗示的那样,实现这一目标的唯一方法就是基于Set2Inlinedjango/contrib/admin/templates/admin/edit_inline/tabular.html创建自定义模板:

# admin.py
class Set2Inline(admin.TabularInline):
    template = 'myapp/templates/myapp/admin/tabular.html'

{# myapp/templates/myapp/admin/tabular.html #}
{% load i18n admin_static admin_modify %}
<div class="inline-group your-class" id="{{ inline_admin_formset.formset.prefix }}-group">
  <div class="tabular inline-related {% if forloop.last %}last-related{% endif %}">
{{ inline_admin_formset.formset.management_form }}
<fieldset class="module your-fieldset-class">
...

另一种方法是将{j}文件添加到Media Set2Inline中,使用jQuery添加类:

class Set2Inline(admin.TabularInline):
    class Media:
        js = 'myapp/admin/addClasses.js',

// myapp/static/myapp/admin/addClasses.js
(function($) {
    $('#mymodel-group').addClass('your-class');
    $('#mymodel-group fieldset.module').addClass('your-fieldset-class');
})(django.jQuery);

答案 1 :(得分:0)

是的,

{{1}}

使用Django 2.1,不确定添加哪个版本。