2013-01-24 33 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

相关问题