0

私は次のものを持っています: ModelForm フィールド ラベルに文字列を追加したいです。フォームクラスでやりたい。

私はこれをします:

class MyForm(ModelForm):

    class Meta():
        model = MyEntity

    def __init__(self, *args, **kwargs):
        super(MyForm, self).__init__(*args, **kwargs)

        for key in self.fields:                                
           self.fields[key].label = "-- " + self.fields[key].label

テンプレートでは常に次のようになります。

-- django.utils.functional. 0x04605E10 のプロキシオブジェクト>

proxy___argsラベルの 0 の下に正しいラベルが含まれています。このラベルを取得するにはどうすればよいですか? そんなに難しくありませんよね?

ありがとう!

4

3 に答える 3

0

これはおそらく、ラベルがugettext_lazyオブジェクトであり、通常の文字列と混在できないために発生しています。ドキュメントから:

ugettext_lazy() 呼び出しの結果は、Python で unicode 文字列 (unicode 型のオブジェクト) を使用する場所ならどこでも使用できます。バイト文字列 (str オブジェクト) が期待される場所で使用しようとすると、ugettext_lazy() オブジェクトは自分自身をバイト文字列に変換する方法を知らないため、期待どおりに動作しません。バイト文字列内でユニコード文字列を使用することもできないため、これは通常の Python の動作と一致しています....「hello <django.utils.functional...>」のような出力が表示された場合は、 ugettext_lazy() の結果をバイト文字列に挿入しようとしました。

u"-- "代わりに使用してみてください。mariodev のstring_concat提案も機能するはずです。

于 2013-08-28T18:37:44.417 に答える