У меня имеется нестандартная форма. В ней два динамических Select Box'а. Содержимое одного зависит от URL, второго - от первого через API-запрос. Для того, чтобы сформировать форму, у меня получился большой CreateView класс. В нем, к примеру, обрабатывается URL (dispatch), к входящим с формы данным добавляются вспомогательные перед записью в базу (form_valid) и т.д..
class CostCreate(CreateView):
def dispatch(self, request, *args, **kwargs):
try:
self.type_of_cost = kwargs['type_of_cost']
except KeyError:
self.type_of_cost = 'daily'
def form_valid(self, form):
f = form.save(commit=False)
f.type = self.type_of_cost
f.save()
return super().form_valid(form)
Естественно, все эти методы необходимо сделать и для UpdateView, поэтому он получается во многом дубликатом первого класса.
Когда я смотрю на это, я понимаю, что эти два класса нужно объединить. Но я не понимаю, как именно. Подскажите, пожалуйста.