我使用django,我想知道在什麼情況下模型驗證應該去。至少有兩個變種:ORM的分離和驗證
- 驗證模型的保存方法,提高IntegrityError或其他異常,如果業務規則被違反使用形式
- 驗證數據和內置clean_ *設施
從一個角度來看,答案很明顯:應該使用基於表單的驗證。這是因爲ORM是ORM,驗證完全是另一個概念。看看CharField:forms.CharField允許min_length指定,但models.CharField不允許。 好酷,但是那些驗證功能在django.db.models中做了什麼?我可以指定CharField不能爲空,我可以在Python中使用EmailField,FileField,SlugField驗證,而不使用RDBMS。此外還有一個URLField,它檢查存在的涉及一些非常複雜的邏輯的url。
從另一個方面,如果我有我想保證它不會被保存或者在不一致的狀態是否從形式來修改/創建一些內部算法的實體。我有一個名稱字段的模型,我期望它應該比一個字符長。我還有一個min_age和一個max_age字段,如果min_age> max_age沒有多大意義。那麼我應該用保存方法檢查這些條件嗎?
模型驗證的最佳實踐是什麼?
這是一個非常理想的假設。我經常不得不使用數據源,而原始創建者對數據驗證的要求並不嚴格。在將數據放入數據庫之前,我仍然需要驗證它們,即使它們不是直接來自表單。這就是爲什麼我對模型驗證GSoC項目的結果非常渴望:-) – 2009-07-10 14:00:13