Django - 从ModelForm字段标签中获取字符串

时间:2013-08-28 15:40:20

标签: django django-forms

我有以下内容:我想在我的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下包含正确的标签。我怎么能得到这个标签?不能那么难,可以吗?

谢谢!

3 个答案:

答案 0 :(得分:0)

这有用吗?:

from django.utils.translation import string_concat

for key in self.fields:
    self.fields[key].label = string_concat("-- ", self.fields[key].label)

答案 1 :(得分:0)

这可能是因为您的标签是ugettext_lazy对象而无法与常规字符串混合使用。来自documentation

  

ugettext_lazy()调用的结果可以在任何使用unicode字符串的地方使用   (Python中的类型为unicode的对象)。如果你尝试在bytestring(str   对象)是预期的,因为ugettext_lazy()对象,事情将无法按预期工作   不知道如何将自己转换为bytestring。您不能使用unicode字符串   在一个bytestring中,所以这与普通的Python行为一致....如果   你看到输出看起来像“你好< django.utils.functional ...>”,你试过   将ugettext_lazy()的结果插入到bytestring。

请尝试使用u"-- "。 mariodev的string_concat建议也应该有效。

答案 2 :(得分:0)

诀窍是标签是字符串数组。您需要将数组位连接到这样的字符串:

self.fields[key].label = "-- %s" % string.join(self.fields[key].label, "")