Я хотел бы изменить ширину столбцов в списке, отображаемом администратором Django.
Можно ли как-то добавить имя класса CSS в столбец? Я бы предпочел не перезаписывать весь шаблон для этого.
Я хотел бы изменить ширину столбцов в списке, отображаемом администратором Django.
Можно ли как-то добавить имя класса CSS в столбец? Я бы предпочел не перезаписывать весь шаблон для этого.
В Django >= 1.6 классы CSS включены в вывод list_display:
"Имена полей в list_display
также будут отображаться как классы CSS в выводе HTML в форме column-<field_name>
для каждого элемента <th>
. Это можно использовать для установки ширины столбцов в файле CSS."
admin.py
содержит list_display = ('foo',)
, администратор Django выводит <th class="column-foo">
. Вы можете использовать .column-foo { width: ... ; }
в своем CSS.
- person StvnW; 21.01.2016
Хотя эта функция реализована в версии 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
.
css = {'all': ('css/mymodel_list.css')}
следует добавить запятую: css = {'all': ('css/mymodel_list.css', )}
будет кортежем.
- person carton.swing; 13.03.2018
Существует открытый тикет, который устраняет необходимость указания классов 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 %}
Таким образом, вы не переопределяете весь шаблон, а только ту часть (экстрастиль), которая вам нужна.
Теперь вы можете внедрить свою собственную таблицу стилей и, например, оформить столбцы с помощью :nth-child-selector
Другой вариант — обернуть ваши определенные поля в html, что можно сделать с помощью list_display. Здесь вы можете определить ширину или класс для обернутого элемента. Однако это имеет смысл только в том случае, если вы хотите контролировать ширину ограниченного набора полей.