0

我想在我的 Django 应用程序的管理界面中右对齐数字字段。formfield_for_dbfield(self, db_field, **kwargs):对于“普通”可编辑字段,通过覆盖ModelAdmin类可以正常工作:

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 上找到了这个问题,但它的问题与我的不同,我认为......

4

1 回答 1

4

为什么不直接使用 css?定义一个 /admin/base.html 模板,您可以在其中加载一个自定义 css,该 css 指定:

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

如果您需要限制某些只读字段的样式,您仍然可以通过执行以下操作来使用 css:

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

甚至特定领域:

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

附录

我看到你正在使用 Grappelli,在这种情况下你可以这样做:

.grp-readonly{
    float: right;
}

如果您只需要设置某些只读段落而不是所有段落的样式,您仍然可以在 CSS 规则前面加上父元素的 css 类,通常该类以字段名称命名,所以如果您有一个名为“total”的文件这将是:

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

我认为为演示问题编写自定义过滤器是一种维护过度,您将来可能会后悔,您确定这是最好的方法吗?

于 2013-01-24T09:40:06.277 回答