2010-02-05 31 views
1

我試圖在驗證過程中根據選擇小部件強制使用表單字段。Django:在運行clean()時在formfield上設置required = True實際上只是在

def clean(self): 
    cleaned_data = self.cleaned_data 
    if cleaned_data.get('periodical') == True: 
     if cleaned_data.get('period_start_date') == None: 
      msg = _('custom message') 
      self._errors['period_start_date'] = ErrorList([msg]) 

的示例代碼工作,但有一個在錯誤信息沒有什麼區別了period_start_date是否需要(因此不空)之間,或者它是否是一個正確的格式化的日期。由於Django的驗證正確處理了這個問題,我不打算替換它。

我試圖完成(排序)的是在period_start_date字段中設置爲True時,在運行clean()之前選擇字段'periodical'時被勾選。有人對我有啓發性的小費嗎?

感謝名單。

回答

1
def clean_period_start_date(self): 
    psd = self.cleaned_data['period_start_date'] 
    prd = self.cleaned_data['periodical'] 
    if prd: 
    if not psd: 
     raise forms.ValidationError("Start date is required on a periodical thing...") 
    return psd 

清理期限開始日期。那麼你可以專門爲此提出錯誤。

+0

在文檔中進一步閱讀,您也可以在您已有的乾淨方法中引發驗證錯誤。 http://docs.djangoproject.com/zh/dev/ref/forms/validation/#cleaning-and-validating-fields-that-depend-on-each-other –

+0

呃我..永遠不會跨過我的腦海去做乾淨的PSD。只是在prd .. thanx上搞砸了! – GerardJP

相關問題