我有以下内容:我想在我的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 :(得分: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, "")