django 在管理中从TabularInline中删除标题

j5fpnvbx  于 2023-04-22  发布在  Go
关注(0)|答案(3)|浏览(96)

当我在Django的管理面板中创建一个TabularInline时,它会为每条记录显示一个标题。我如何更改这个标题?我如何删除这个标题?
我在下面包括一个截图。我指的标题是这里的ExportLookupTableElement对象。没有标题的行是添加新字段的额外字段。我希望整个表看起来像这样。

hpcdzsge

hpcdzsge1#

根据nattster的回答,我这样做了:
编辑/创建templates/admin/base_site.html

{% extends "admin/base.html" %}
    {% block extrastyle %}
        <link rel="stylesheet" href="{% static "admin/css/admin_overrides.css" %}" />
    {% endblock %}

创建admin/css/admin_overrides.css

/* StackedInline */
    .inline-group .hide-title h3 b, .inline-group .hide-title h3 .inline_label {
        visibility: hidden;
    }

    /* TabularInline */
    .inline-group .tabular .hide-title .original > p {
        display: none;
    }

    .inline-group .tabular .hide-title tr.has_original td {
        padding-top: 8px;
    }

现在,您可以隐藏某些内联的标题,而保留其他内联的标题:

class TestTabularInline(admin.TabularInline):
        classes = ("hide-title",)
        ...
    
    class TestStackedInline(admin.StackedInline):
        classes = ("hide-title",)
        ...
sqxo8psd

sqxo8psd2#

如果你能负担得起内联模型的目的,从它的__str__方法返回一个空字符串与上面提供的解决方案具有完全相同的效果。title元素仍然在HTML中,但不再占用任何可见空间。

class TestDetail(models.Model):
        ...
        def __str__(self):
            return ''
lyfkaqu1

lyfkaqu13#

你可以通过覆盖Django的admin css来移除这个标题:
1.使用以下代码在静态目录中创建css/custom_admin.css

.inline-group .tabular tr.has_original td {
    padding-top: 8px;
}

.original {
    display: none;
}

1.编辑您的admin.py文件,以包含您想要删除的ModelAdmin的额外css标题:

class TestDetailInline(admin.TabularInline):
    model = TestDetail

class TestAdmin(admin.ModelAdmin):
    class Media:
        css = {
            'all': ('css/custom_admin.css', )     # Include extra css
        }
    inlines = [TestDetailInline]

或者你也可以通过下面的answer来覆盖所有管理页面的css。

相关问题