2009-12-09 14 views
1

我有一個模型有四個字段,都有null = True定義。我想阻止創建一個完全無效的模型;我寧願不使用表單驗證器,因爲我希望這可以使用默認管理員。確保指定模型中至少有一個字段的最佳方法?

如果我重寫save()方法來做一個檢查,我會在錯誤中引發什麼?

回答

1

你可以提出任何事情,這取決於你。在這種情況下,ValueError可能是合適的。

+1

ValueError可能是合適的,但也可能因其他原因引發。創建自定義錯誤將使他只能捕捉到他希望捕獲的具體錯誤。 – sheats 2009-12-09 19:49:51

+0

我同意創建你自己的例外將是一個更好的主意。創建一個名爲'NullModelError'的異常或者類似的描述將允許特定的異常捕獲。 – jathanism 2009-12-11 03:15:40

1

我會把它放在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 
相關問題