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だけを使用しないのですか?以下を指定するカスタムcssをロードする/admin/base.htmlテンプレートを定義します。

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 に答える