Django:在运行clean()时,在formfield上设置required = True ..实际上就在之前

时间:2010-02-05 14:29:14

标签: django django-forms django-models

我正在尝试在验证期间根据选择小部件强制要求表单字段。

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()之前勾选了选择字段'periodicical'。对我来说,任何人都有启发性的提示吗?

感谢名单。

1 个答案:

答案 0 :(得分: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

仅清理期间开始日期。然后你可以专门为此提出错误。