有沒有「簡單」的方法來做到這一點,所以我必須首先問你爲什麼需要這樣做。我不明白爲什麼<th>
元素會「明顯」破壞你的設計。 <th>
元素相當於<td>
,但默認情況下具有額外樣式(通常爲font-weight: bold; text-align: center;
)。你應該能夠在你的CSS中解釋這個。
這就是說,這裏有一些方法可以看。 th/td選項在django.contrib.admin.templatetags.admin_list.py
的第169行(Django 1.2.1)上確定。這是它出現在上下文的剪斷摘要:
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」模板標籤,它調用上面的代碼標籤,並用
<td>
s代替所有值中的任何<th>
。然後,您可以在「admin_list」加載後覆蓋「change_list.html」和{%load%}標籤。
- 編輯Django代碼。不過你會後悔的。
如果你有沒有在表中是一個鏈接到編輯頁面的項目列OK(我無法想象,你爲什麼會),你可以在你admin.py
使用這個醜陋的黑客:
admin.site.register(YourModel, YourModelAdmin)
admin.site._registry[YourModel].list_display_links = ['not_a_field_name',]`
由於管理模型只驗證一次,這發生在register()
被調用時,你可以註冊ModelAdmin
後來取,並給它一個無效list_display_links
財產。
確實,編輯CSS要容易得多。然而,從可用性的角度來看(和我的理想主義),th只能用於標題單元格。這只是一種荒謬的原因,他們爲什麼使用th而不是td。 – Furunomoe 2010-07-18 17:22:38