2011-09-01 67 views
1

我有一個有一組字段的表單。例如,它可能是:名字,姓氏和電子郵件。 表單上有兩個提交按鈕:保存並關閉。有兩種驗證方案。Django。多個表單驗證方案

在點擊'保存'按鈕後首先檢查字段「名稱」是否有值。如果它有數據庫將被更新。

在第二種情況下,我點擊'關閉'按鈕。並且應該有另一個驗證:名稱不是空的並且包含某個值,姓氏不是空的,並且電子郵件包含某個特定的域。

那麼我怎麼能實現所有這些驗證方案的一種形式。我發現只有糟糕的解決方案,比如它會在form clean()方法中使用一些if-else語句。

回答

0

我不明白爲什麼在save()方法中有if/else這麼糟糕。我可能會做這樣的事情:

def clean_save(self): 
    #validation for the save case 

def clean_close(self): 
    #validation for the close case 

def clean(self): 
    cleaned_data = self.cleaned_data 
    if cleaned_data.get('save_button'): 
     return self.clean_save() 
    elif cleaned_data.get('close_button'): 
     return self.clean_close() 
    else: 
     raise ValidationError('some error message') 

我是從我的頭寫這並沒有測試,但這樣的做法應該是很好的保持驗證了看法。

0

我認爲表單驗證應該保持字段的類型(例如,確保不應該爲空的字段不是)。我會把你在視圖中提出的驗證。這將是一種if-then-else,但它將基於按下的按鈕。

+0

這是什麼意思在django中查看驗證? JavaScript的? – sunprophit