2014-03-19 31 views
10

我碰到一個django.utils.functional.__proxy__對象多次在下面的代碼位跌跌撞撞,最後一次:什麼是django.utils.functional .__ proxy__對象,它有什麼幫助?

def formfield_for_choice_field(self, db_field, request, **kwargs): 
    print db_field.help_text 

(與打印是<django.utils.functional.__proxy__ object at 0x7fc6940106d0>的結果)

現在,爲什麼事情纏着這個對象?它的主要目的是什麼?更重要的是,我如何訪問代理對象背後的價值?我查看了Django的源代碼,我看到了一些關於懶惰評估的內容,但是有太多的包裝和包裝對象來充分理解發生了什麼。任何細節在此將不勝感激。

回答

18

它是一個翻譯字符串 - 已標記爲已翻譯的字符串,但其實際翻譯結果直到該對象在字符串中使用才確定。請參閱Django文檔:https://docs.djangoproject.com/en/dev/ref/unicode/#translated-strings

調用unicode(object)將生成一個Unicode字符串。此外,如果您撥打對象的__dict__,則可以在_proxy____args下找到其數據。

+0

謝謝澄清! – linkyndy

相關問題