2011-09-28 31 views
1

我需要爲從數據庫返回的數據添加一些附加信息。例如,對於Person,DB中有'name'字段,當它顯示在表單上時,我需要添加'{','}'。我認爲'django.forms.fields'模塊'Field'類的方法bound_data是我所需要的。但似乎它用於其他目的。它在表單提交時有效,出於任何原因驗證失敗 - 只是爲了不丟失正確的數據。Django。從DB預處理數據

那麼我怎樣才能爲我的'名字'字段實現一些裝飾?

+0

您是否正在尋找更改數據庫返回的數據,保存到數據庫的數據,還是隻有當數據呈現在表單中時才呈現數據的方式? – fourk

+0

第三個 - 當且僅當數據呈現在表單內時才呈現數據的方式。 – sunprophit

回答

1

你沒有在什麼情況下解釋你需要它。我有類似的問題,我解決它裏面的unicode

class Person(models.Model): 
    name = models.CharField(max_length=150) 

def __unicode__(self): 
    return '%s,' % self.name 

現在裏面形成你將不得不爲模型的Unicode,當你只需要在名稱使用person.name代替。希望能幫助到你。

+0

我怎麼能忘記__unicode__?不知道。它完美地解決了我的一個問題。謝謝。 – sunprophit

+0

我很高興它有幫助。 – Goran

+0

在我的情況下,我想裝飾2個領域。我認爲__unicode__不會幫助我。 – sunprophit

2

我在Field類的'django.forms.fields'模塊中找到了方法'prepare_value',它使用來自數據庫的數據或與字段的一些初始數據進行一些操作。所以我在'MyField'中覆蓋了這個方法,並把所有的裝飾工作放在裏面。它允許你使用多個字段的模型,所以猜測它比unicode方法更好。

但仍然感謝戈蘭。

+0

upvote this。我發現這個神奇的方法閱讀forms/forms.py,這是正確的解決方案。 – est