2013-08-28 53 views
0

我有以下內容:我想添加一個字符串到我的ModelForm字段標籤。我想在表格課上做。Django - 從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

訣竅是標籤是字符串數組。您需要將陣列位加入像這樣的字符串:

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

這是工作?:

from django.utils.translation import string_concat 

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

這可能發生,因爲你的標籤是一個ugettext_lazy對象,不能用常規的字符串混合。從documentation

一個ugettext_lazy()調用的結果可以用於任何你可以使用Python中的Unicode字符串 (有型的unicode的對象)。如果您嘗試在預期字符串(str 對象)的地方使用它,由於ugettext_lazy()對象 不知道如何將其自身轉換爲字節字符串,因此無法按預期工作。你不能在字節串中使用一個Unicode字符串 ,所以這與正常的Python行爲一致....如果你看到 的輸出看起來像「你好< django.utils.functional ... >」,您已嘗試使用 將ugettext_lazy()的結果插入到字符串中。

嘗試使用u"-- "代替。 mariodev的string_concat建議也應該工作。