Очистка определенного поля в 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})