2013-01-24 62 views
0

我想在我的Django應用程序的管理界面中對齊數字字段。對於「正常」的編輯字段此工程確定通過重寫formfield_for_dbfield(self, db_field, **kwargs):ModelAdmin類:如何在Django admin中對齊只讀字段?

def formfield_for_dbfield(self, db_field, **kwargs): 
    field = super(MyModelAdmin, self).formfield_for_dbfield(db_field, **kwargs) 
    if db_field.name in ("total_amount", "total_discount_amount"): 
     field.widget.attrs['style'] = 'text-align:right;' 
    return field 

當一個域是由通過這個方法定義爲只讀字段,並以不同的方式被呈現(顯然就像一個CSS樣式的段落標籤)。

有沒有辦法讓右對齊只讀字段?我在SO上發現了this question,但它的問題與我的不同,我認爲...

+0

您是否找到了解決您的問題的解決方案? – nemesisdesign

+1

@nemesisdesign:是的,我通過「引導」管理員並使用他們的只讀輸入解決了這個問題,這基本上就是你的建議。我已經接受你的答案,雖然有點晚了... – Roger

回答

2

爲什麼不只是使用css?定義在其中加載自定義的CSS,它指定了一個/admin/base.html模板:

input[readonly="readonly"]{ 
    text-align: right 
} 

如果需要限制某些只讀字段的styiling你仍然可以通過執行類似使用CSS:

#my-app fieldset input[readonly="readonly"]{ 
    text-align: right 
} 

甚至具體領域:

#id_total, #id_average, #id_my_readonly_field{ 
    text-align: right 
} 

附錄

我本身Ë您使用格拉佩利,在這種情況下,你可以這樣做:

.grp-readonly{ 
    float: right; 
} 

如果您需要的款式只有某些只讀的段落,而不是所有的人,你仍然可以用CSS類的父元素的前綴的CSS規則,通常類的字段名稱來命名,所以如果你有一個叫「總」的文件將是:

.total .grp-readonly{ 
    float: right; 
} 

我覺得寫一個演示問題的自定義過濾器,你可能在後悔mantainance矯枉過正未來,你確定這是最好的方法嗎?

+0

謝謝。我曾考慮過,但只讀字段生成爲樣式段落,而不是html輸入字段。他們也沒有設置HTML標識,所以AFAIK沒有選擇樣式,但通過相關的類,然後將所有隻讀字段右對齊... – Roger

+1

我增加了幾個注意事項 – nemesisdesign

+0

好東西!我會試試... – Roger

相關問題