Django: установка обязательна = True в поле формы при запуске clean () .. на самом деле перед - PullRequest
1 голос
/ 05 февраля 2010

Я пытаюсь установить обязательное поле формы на основе виджета выбора во время проверки.

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 обрабатывает это должным образом, я не собираюсь заменять это.

То, что я пытаюсь выполнить (что-то вроде), это установить для True значение в поле period_start_date, когда в поле выбора 'periodical' ставится галочка непосредственно перед тем, как оно запускается clean (). Кто-нибудь дает мне полезный совет?

Thanx.

1 Ответ

1 голос
/ 05 февраля 2010
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

очистить только дату начала периода. тогда вы можете поднять ошибку специально для этого.

...