Нет «легкого» способа сделать это, поэтому я должен сначала спросить, почему именно вам нужно сделать это вообще.Я не понимаю, почему элемент <th>
должен «явно» нарушать ваш дизайн.Элемент <th>
эквивалентен <td>
, за исключением того, что он имеет дополнительный стиль по умолчанию (обычно font-weight: bold; text-align: center;
).Вы должны быть в состоянии объяснить это в своем CSS.
Тем не менее, вот некоторые возможности, на которые стоит обратить внимание.Выбор th / td определяется в строке 169 (Django 1.2.1) из django.contrib.admin.templatetags.admin_list.py
.Вот краткий обзор контекста, в котором он появляется:
def items_for_result(cl, result, form):
first = True
for field_name in cl.list_display:
# ...
if (first and not cl.list_display_links) or field_name in cl.list_display_links:
table_tag = {True:'th', False:'td'}[first]
first = False
# ...
yield mark_safe(u'<%s%s><a href="%s"%s>%s</a></%s>' % (table_tag, row_class, url, ...)
else:
# ...
yield mark_safe(u'<td%s>%s</td>' % (row_class, result_repr))
Как видите, не существует очевидного способа изменить поведение, определяющее значение table_tag, поэтому некоторые из имеющихся у вас параметров:
- Определить шаблонную метку "items_for_result", которая вызывает указанную выше и заменяет любые
<th>
с в полученных значениях на <td>
с.Затем вы можете переопределить «change_list.html» и {% load%} тег после загрузки «admin_list». - Редактировать код Django.Вы пожалеете об этом позже.
Если вы в порядке, ни один из столбцов таблицы не является ссылкой на страницу редактирования для элемента (я не могу представить, почему вы это сделали)вы можете использовать этот уродливый хак в вашем admin.py
:
admin.site.register(YourModel, YourModelAdmin)
admin.site._registry[YourModel].list_display_links = ['not_a_field_name',]`
Поскольку модели администратора проверяются только один раз, что происходит при вызове register()
, вы можете получить зарегистрированный ModelAdmin
впоследствии иприсвоить ему недействительное свойство list_display_links
.