Django ModelForm标签定制

时间:2014-01-08 04:02:47

标签: python django label django-forms

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"),
        }

3 个答案:

答案 0 :(得分:13)

如果其他人正在寻找它 (2016 - Django 1.9)

对我来说就像这样:

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

没有懒惰导入。

答案 1 :(得分:9)

您是否导入了以下内容?

from django.utils.translation import ugettext_lazy as _

ugettextugettext_lazy用于指定翻译字符串。 _用于保存打字。

请参阅Translation | Django documentation

答案 2 :(得分:1)

我有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' <-----