【问题标题】:adding css class to django inlines fieldset将 css 类添加到 django 内联字段集
【发布时间】:2013-11-05 00:10:52
【问题描述】:

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

class Set2Inline(admin.TabularInline):
    ...

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

有没有办法以类似于'inlines'的方式添加一个类,例如:

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

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

【问题讨论】:

  • 我认为您必须根据内置的django/contrib/admin/templates/admin/edit_inline/tabular.html 定义自己的模板,然后在Set2Inline 上设置template 属性或定义InlineModelAdmin 的新子类- 我在标准模板中看不到任何允许这样做的内容。

标签: django


【解决方案1】:

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

# 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">
...

另一种方法是在Set2Inline 中向Media 添加一个javascript 文件,该文件使用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);

【讨论】:

  • 赞成扩展我相对较短的评论。我希望 jQuery 版本不是必需的,因为如果您可以在 jQuery 中编写正确的选择器,您也可以在 CSS 中编写它们而不是依赖类名,但这确实取决于具体情况。
【解决方案2】:

是的,你可以,

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

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

【讨论】:

    猜你喜欢
    • 2020-12-21
    • 2018-07-11
    • 2018-03-10
    • 2014-02-17
    • 1970-01-01
    • 1970-01-01
    • 2018-03-14
    • 2010-10-06
    • 2015-10-10
    相关资源
    最近更新 更多