Как вызвать метод в классе? django python
Создаю форму в django, но надо чтобы форма выбиралась в соответствии с переданным tag в ulr
class OrderAddView(CreateView):
tag_url_kwarg = 'tag'
from_class = get_order_form(tag_url_kwarg)
template_name = 'orders/order_add.html'
def get_order_form(self,tag):
print('tag', tag)
if tag == 'fast':
return FastOrdersForm
if tag == 'simple':
return SimpleOrdersForm
Как лучше реализовать? как вызывать метод в классе?
Ответы (1 шт):
Автор решения: Dima
→ Ссылка
Можно создать что-то вроде маппера форм, где ключами будут слаги, а значениями - формы. Например,
FORMS_MAPPER = {
'fast': FastOrdersForm,
'simple': SimpleOrdersForm
}
а затем в контроллере используя метод get_form_class, получить соответствующую форму:
class OrderAddView(CreateView):
tag_url_kwarg = 'tag'
template_name = 'orders/order_add.html'
def get_form_class(self):
return FORMS_MAPPER[self.kwargs.get('tag', 'fast')]
Более подробный ответ можете посмотреть здесь - https://stackoverflow.com/questions/55957261/django-formview-with-dynamic-forms/55957490#55957490