1

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

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 类中完成,那也很好。

4

2 回答 2

2

就像彼得的评论所暗示的那样,几乎唯一可以实现这一目标的方法是创建一个Set2Inline基于以下内容的自定义模板django/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">
...

另一种方法是添加一个javascript文件,Media使用Set2InlinejQuery添加类:

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);
于 2013-11-05T01:17:13.297 回答
1

是的你可以,

class Set2Inline(admin.TabularInline):  # extending any admin Inline Class will work AFAIK
    ...
    classes = ['collapse',]
    ...

在 Django 2.1 中工作,不确定添加到哪个版本。

于 2018-09-28T11:56:23.117 回答