創建表單時,您可以定義一堆方法clean_xyz
,以確保數據被強制轉換爲正確的格式。有什麼辦法可以在模型層面上做到這一點?Django模型數據一致性
也許我可以重寫字段設置器?我想這麼說,如果我喜歡寫東西
my_address.postal_code = 'a1b2c3'
它會自動獲得格式化成A1B 2C3
。如果無法轉換,可能會拋出異常。這樣我知道我永遠不會在數據庫中有任何格式不正確的數據。
創建表單時,您可以定義一堆方法clean_xyz
,以確保數據被強制轉換爲正確的格式。有什麼辦法可以在模型層面上做到這一點?Django模型數據一致性
也許我可以重寫字段設置器?我想這麼說,如果我喜歡寫東西
my_address.postal_code = 'a1b2c3'
它會自動獲得格式化成A1B 2C3
。如果無法轉換,可能會拋出異常。這樣我知道我永遠不會在數據庫中有任何格式不正確的數據。
也許在你的模型上覆蓋save()可能會幫助你?
def save(self, *args, **kwargs):
# do your formatting
self.postal_code = somefancyformattingmethod()
# save it to the database
super(YourModel, self).save(*args, **kwargs)
由於Django的1.2有a section in the docs that deal with the validation of models,我建議你看看Model.clean()。
哦......我不知道他們補充說!他們沒有像表單那樣的`clean_FIELD()`方法通過eh?好吧。這應該工作得很好。謝謝! – mpen 2011-02-01 02:52:01
不是一個壞的方法。沒有考慮在保存上做這件事。 – mpen 2011-02-01 02:52:27