Как дать столбцу в админке Django change_list CSS класс - PullRequest
3 голосов
/ 21 апреля 2011

Я бы хотел изменить ширину столбцов в списке администратора Django.

Можно ли как-нибудь добавить имя класса CSS в столбец?Я бы предпочел не перезаписывать весь шаблон для достижения этой цели.

Ответы [ 3 ]

6 голосов
/ 04 ноября 2013

В Django> = 1.6 классы CSS включены в вывод list_display:

" Имена полей в list_display также будут отображаться как CSS-классы в выводе HTML в виде column-<field_name> для каждого элемента <th>. Это можно использовать для установки ширины столбцов в CSS файл."

3 голосов
/ 13 ноября 2013

Хотя эта функция реализована в версии 1.6, как сказал StvnW, для более ранних версий вы можете сделать следующее:

В admin.py:

class MyModelAdmin(admin.ModelAdmin):
    # your code here

    # specify a stylesheet just for the list view
    class Media:
        css = {'all': ('css/mymodel_list.css')}

В mymodel_list.css:

/* replace '5' with the column desired */
table#result_list td:nth-child(5) {
    width: 15em;
}

Указание table#result_list будет применять эту таблицу стилей только к представлению списка и не повлияет на обычную страницу администратора для этой модели. Также обратите внимание, что в то время как django использует th для первого столбца модели, он все равно учитывает td child.

2 голосов
/ 21 апреля 2011

Существует открытый тикет , который учитывает необходимость указания классов css для столбцов таблицы в представлении change_list.

Тем не менее ... в описании тикета есть фрагменткоторый вставляет пользовательскую таблицу стилей в шаблон change_list:

{% extends "admin/change_list.html" %}
{% block extrastyle %}
  {{ block.super }}
  <link rel="stylesheet" type="text/css" href="/css/poll_admin_changelist.css" />
{% endblock extrastyle %}

Таким образом, вы не переопределяете весь шаблон, а только ту часть (extrastyle), которая вам нужна.

Теперь вы можете добавитьсобственную таблицу стилей и, например, стиль ваших столбцов, используя : nth-child-selector

Другой вариант - заключить ваши определенные поля в html, что можно сделать с помощью list_display вариант.Здесь вы можете определить ширину или класс для обернутого элемента.Это имеет смысл, только если вы хотите контролировать ширину ограниченного набора полей

...