Очистка определенного поля в Django forms.Form?

У меня есть форма Django следующего вида.

class TransactionForm(forms.Form):
      start = forms.DateField()
      end = forms.DateField()

Я хотел изменить значение перед выполнением валидации:

def clean_start(self):
    start = sef.cleaned_data.get('start')
    return bs_to_ad(start)   //This function returns date in 'YYYY-MM-DD' format

Проблема в том, что этот метод работает в объекте forms.ModelForm, но не работает в объекте forms.Form.

Помощь приветствуется. Спасибо.

Вы можете изменить данные перед вызовом метода __init__, используя пользовательский метод __init__, как это показано ниже

class TransactionForm(forms.Form):
    start = forms.DateField()
    end = forms.DateField()

    def __init__(self, **kwargs):
        if "data" in kwargs:
            start = kwargs.get("data").get("start")
            # modify start
            kwargs["data"]["start"] = start
        super().__init__(self, **kwargs)

Простое выполнение этого действия работает нормально.

class TransactionFrom(forms.Form):
  start = forms.DateField()
  end = forms.DateField()
  def clean(self):
    data = self.cleaned_data
    if 'start' in data.keys():
        start = bs_to_ad(data.get('start'))
    if 'end' in data.keys():
        end = bs_to_ad(data.get('end'))
    self.cleaned_data.update({'start': start, 'end': end})
Вернуться на верх