2009-10-01 18 views
0

根據其屬性,是否有一種直接的常用方式將自定義樣式應用於管理更改列表元素?造型某些管理更改列表行

更新

爲了更精確:比方說,我有一個簡單的模型對象。

Foo 

    field1 
    field2 
    field3 

    @property 
    property1() 
    @property 
    property2() 

ModelAdmin.list_display被定義爲可用的字段的子集,因此不是每個屬性(字段/屬性)被顯示在改變列表表格。

我想申請自定義CSS類對象的行當滿足一定的條件,例如:如果foo_instance.property1True再加入bar類相應tr元素。

+0

可能重複[更換Django管理列表行顏色] (http://stackoverflow.com/questions/4014914/change-row-colour-in-django-admin-list) – CDMP 2014-01-10 18:19:23

回答

0

現在從默認的Django管理模板目錄(Django的/的contrib /管理/模板)內複製的模板管理/ base_site.html到您使用的是哪個TEMPLATE_DIRS目錄的admin子目錄。例如,如果TEMPLATE_DIRS包含「/ home/my_username/mytemplates」,則將django/contrib/admin/templates/admin/base_site.html複製到/home/my_username/mytemplates/admin/base_site.html。不要忘記管理員子目錄。

請注意,任何Django的默認管理模板都可以被覆蓋。要覆蓋模板,只需執行與base_site.html相同的操作 - 將其從默認目錄複製到您的自定義目錄中,然後進行更改。

django's tutorial

+0

我知道重寫管理模板;重點是我沒有辦法做到這一點沒有深入的黑客攻擊,因爲更改列表使用result_list包含標記,它返回列表o HTML對象(可能是formset元素)。 – ohnoes 2009-10-01 13:41:14

+0

*取決於其屬性* @我的問題是這裏的關鍵問題 – ohnoes 2009-10-01 13:44:02

0

究竟你的「更改列表元素」和「它的屬性」是什麼意思?使用CSS 2或CSS 3選擇器,你可以做一些事情。否則,你可以使用jQuery(或其他)輕鬆完成。由於它僅僅是與演示相關的,我認爲這將是最乾淨的解決方案。

+0

我已經更新了一些細節的問題。 – ohnoes 2009-10-02 07:50:48

0

老問題,但如果你偶然發現,下面的提示可能會有所幫助。

您可以使用django-liststyle來自定義管理更改列表行。

這是很簡單的實現你的例子:

class FooAdmin(admin.ModelAdmin, ListStyleAdminMixin): 
    ... 
    def get_row_css(self, obj, index): 
     if obj.property1: 
      return 'bar' 
     return '' 

Django Suit(不是免費的),還提供了「錶行和單元格屬性」的風格定製

相關問題