У меня есть несколько классов форм django, подобных этим:
class MyCleaningClassForm(forms.Form):
def clean(self):
super(MyCleaningClass, self).clean()
cleaned_data = {}
for key, value in self.cleaned_data.items():
if value:
cleaned_data[key] = value
return cleaned_data
class MyDataForm(forms.Form):
data1 = forms.Charfield(max_length=123)
data2 = forms.IntegerField()
def clean(self):
cleaned_data = {}
if self.cleaned_data['data1'] == 'lala' \
and self.cleaned_data['data2'] == 'lili':
cleaned_data['data1'] = 'lolo'
return cleaned_data
def fill_up_data_dict(self, cleaned_data):
data_dict = {}
data_dict['data1'] = cleaned_data['data1']
data_dict['data2'] = cleaned_data['data2']
return data_dict
class MySubDataForm(MyDataForm, MyCleaningClassForm):
other_data = forms.IntegerField()
def clean(self):
# I want this line to call both clean methods from the 2 superclass
super(MySubDataForm).clean()
self.cleaned_data['my_data_dict'] = self.fill_up_data_dict(
self.cleaned_data)
return self.cleaned_data
MyCleaningClass
- это класс, который я использую в нескольких других формах.Он удаляет все пустые поля из cleaned_data.
MyDataForm
- это класс, который я использую и в нескольких других формах.Этот помогает мне заполнить поле данных в словаре как запрос. POST плоский.Он обрабатывает некоторые фиксированные поля.
Как мне поступить?Есть ли что-нибудь лучше, чем: cleaned_data = MyDataForm.clean(self)
?
Более того, я не уверен, как изменить self.cleaned_data.Я знаю, что оба пути приемлемы (из django doc), но я должен сделать cleaned_data = self.cleaned_data
непосредственно перед оператором return?
Как бы вы все это сделали?Я даже не уверен, что делаю все правильно ...