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___args0 下的正确标签。我怎样才能得到这个标签?不可能那么难吧?

谢谢!

4

3 回答 3

0

这管用吗?:

from django.utils.translation import string_concat

for key in self.fields:
    self.fields[key].label = string_concat("-- ", self.fields[key].label)
于 2013-08-28T17:09:12.907 回答
0

这可能会发生,因为您的标签是一个ugettext_lazy对象,不能与常规字符串混合。从文档

ugettext_lazy() 调用的结果可以在 Python 中使用 unicode 字符串(类型为 unicode 的对象)的任何地方使用。如果您尝试在需要字节串(str 对象)的地方使用它,事情将不会按预期工作,因为 ugettext_lazy() 对象不知道如何将自己转换为字节串。您也不能在字节字符串中使用 unicode 字符串,因此这与正常的 Python 行为是一致的……如果您看到类似“hello <django.utils.functional...>”的输出,您有试图将 ugettext_lazy() 的结果插入到字节串中。

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

于 2013-08-28T18:37:44.417 回答
0

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

self.fields[key].label = "-- %s" % string.join(self.fields[key].label, "")
于 2013-08-29T07:07:17.073 回答