1
我有一個模型有四個字段,都有null = True定義。我想阻止創建一個完全無效的模型;我寧願不使用表單驗證器,因爲我希望這可以使用默認管理員。確保指定模型中至少有一個字段的最佳方法?
如果我重寫save()方法來做一個檢查,我會在錯誤中引發什麼?
我有一個模型有四個字段,都有null = True定義。我想阻止創建一個完全無效的模型;我寧願不使用表單驗證器,因爲我希望這可以使用默認管理員。確保指定模型中至少有一個字段的最佳方法?
如果我重寫save()方法來做一個檢查,我會在錯誤中引發什麼?
你可以提出任何事情,這取決於你。在這種情況下,ValueError可能是合適的。
我會把它放在save()
方法中。然後,創建一個自定義錯誤,您可以在該模型的任何位置嘗試/捕捉到保存的位置。
class EmptyModelDetected(Exception):
pass
# Then in your save method
def save(self, *args, **kwargs):
if self.field1 or self.field2 or self.field3 or self.field4:
super(Model, self).save(*args, **kwargs)
else:
raise EmptyModelDetected()
# Then, wherever you call save
try:
m.save()
except EmptyModelDetected:
# handle the error
ValueError可能是合適的,但也可能因其他原因引發。創建自定義錯誤將使他只能捕捉到他希望捕獲的具體錯誤。 – sheats 2009-12-09 19:49:51
我同意創建你自己的例外將是一個更好的主意。創建一個名爲'NullModelError'的異常或者類似的描述將允許特定的異常捕獲。 – jathanism 2009-12-11 03:15:40