web-dev-qa-db-ja.com

Django ModelFormラベルのカスタマイズ

Djangoドキュメントでは、ModelFormモデルマップでラベルのカスタマイズを使用する方法について説明しています: https://docs.djangoproject.com/en/dev/topics/forms/modelforms/ 。しかし、それをフォローしようとすると、エラーが発生します。

name '_' is not defined.

私は何が間違っているのですか?

また、括弧の前に_記号が必要なのはなぜですか?

これが私のコードです:

class RuleForm(ModelForm):
    def __init__(self, *args, **kwargs): 
        super(ModelForm, self).__init__(*args, **kwargs)
        self.css_class = "rule"

    class Meta:
        model = Rule
        fields = ("user", "title")
        exclude = ("user")
        widgets = {
            "title" : TextInput(attrs={"class" : "title"}),
        }
        labels = {
            "title": _("Rule Title"),
        }
15
jazzblue

以下をインポートしましたか?

from Django.utils.translation import ugettext_lazy as _

ugettextugettext_lazyは、翻訳文字列を指定するために使用されます。 _は入力を保存するために使用されます。

翻訳| Djangoドキュメント を参照してください。

10
falsetru

現時点で他の誰かがそれを探している場合(2016-Django 1.9)

それは私にとってこのように機能します:

labels = {
            "title": "Rule Title",
            "other_field": "Other Title"
        }

怠惰なインポートなし。

16
QUHO

Django 1.6で、 'GregoryR'と同じ問題があります。_ugettext_lazyを_としてインポートしようとしませんでした。代わりに、これを簡単な方法で行いました(最後の行)。

def __init__(self, *args, **kwargs): 
    super(ModelForm, self).__init__(*args, **kwargs)
    self.css_class = "rule"
    self.fields['title'].label = 'Rule Title' <-----
1
user3398838