Использование нескольких форм в django python form
Надо вывести две формы с разных моделей, как их передать правильно и потом обработать?
код ниже выдает ошибку: Reverse for 'order_add' with arguments '('',)' not found. 1 pattern(s) tried: ['orders/add/(?P[^/]+)$']
views.py
class OrderAddView(CreateView):
template_name = 'orders/order_add.html'
def get(self, request, *args, **kwargs):
context = {'formOne': SimpleOrderAddForm(), 'formTwo': FastOrderAddForm()}
return render(request, self.template_name, context)
def get_success_url(self):
return reverse_lazy('orders_home')
def get_context_data(self, *, object_list=None, **kwargs):
context = super().get_context_data(**kwargs)
context['tag'] = self.kwargs['tag']
return context
html
<form action="{% url 'order_add' tag %}" method="post">
{% csrf_token %}
{{ formOne.non_field_errors }}
{{ formOne.as_p }}
{{ formTwo.non_field_errors }}
{{ formTwo.as_p }}
<button type="submit" class="btn btn-primary btn-block">Добавить заказ</button>
</form>
Ответы (1 шт):
Автор решения: Andrey Maslov
→ Ссылка
Скорее всего дело в том, что в методе get ты переопределяешь контекст и в итоге в шаблон не попадает tag. попробуй изменить метод get
def get(self, request, *args, **kwargs):
context = self.get_context_data()
context.update({'formOne': SimpleOrderAddForm(), 'formTwo': FastOrderAddForm()})
return render(request, self.template_name, context)
или наоборот, передавай формы в get_context_data