169 похожих чатов

Всем привет! :)) Скажу сразу, что я новичок, сам по себе

я не разработчик, а продакт менеджер. И вот пилю свой pet-product, столкнулся с проблемой,

У меня есть DetailView, которая наследована от FormMixin, что позволяет мне вывести в шаблон одну форму.
Но я никак не могу понять как мне вывести в шаблон произвольное количество форм... Ну вот сколько нужно, столько и вывести.
Рендерить формы - не проблема, я передаю их через context, тут всё ок. Но как их потом обрабатывать в методе post?
Например, если я сабмичу одну форму, то обрабатывалась именно она, если сабмичу другую, то другая и т.д.

Работать в дальнейшем планирую именно с Class Based Views, поэтому решение желательно бы для этого подхода.
Помогите, пожалуйста.

Вьюшка:
class ProductResearchDetailView(LoginRequiredMixin, FormMixin, generic.DetailView):
model = ProductResearch
form_class = ResearchStageFormModal
template_name = 'product_research/product_research_detail.html'
context_object_name = 'product_research'

def get_success_url(self):
return reverse('product-research:product-research-detail', kwargs={'pk': self.object.pk})

def get_queryset(self, *args, **kwargs):
# проверка на права доступа в качестве создателя объекта
return super(ProductResearchDetailView,
self).get_queryset(*args, **kwargs).filter(product_manager_id=self.request.user.productmanager)

def get_form(self, form_class=None):
# метод для перехвата формы, чтобы передать user.product_manager для фильтрации поля select
if form_class is None:
form_class = self.get_form_class()
return form_class(user=self.request.user.productmanager,
category_of_research=self.get_object().category_of_research,
**self.get_form_kwargs())

def post(self, request, *args, **kwargs):
# метод, который используется для формы в модальном окне
self.object = self.get_object()
form = self.get_form()
if form.is_valid():
return self.form_valid(form)
else:
return self.form_invalid(form)

def form_valid(self, form):
# метод для проставления объекту скрытых полей: создателя, менеджера продукта и других
post_save = form.save(commit=False)
post_save.product_manager = self.request.user.productmanager
post_save.research = self.get_object()
post_save.save()
return super(ProductResearchDetailView, self).form_valid(form)

def get_context_data(self, **kwargs):
context = super(ProductResearchDetailView, self).get_context_data(**kwargs)
research_stage_set = ResearchStage.objects.filter(research_id=self.kwargs.get('pk'))
context['form'] = self.get_form()
context['research_stage_set'] = research_stage_set
context['research_pattern_set'] = ResearchPattern.objects.filter(product_manager_id=self.request.user.productmanager)
return context

2 ответов

49 просмотров

Есть другой чат джангистов, там народу побольше и поактивнее, мне кажется там быстрее ответят (Django [ru] который)

Илья-Подпругин Автор вопроса

Похожие вопросы

Обсуждают сегодня

30500 за редактор? )
Владимир
47
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Подскажите пожалуйста, как в CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); получить наз...
A Z
7
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
1
Он в одиночку это дело запилил или была какая-то команда?
Aquinary
12
~ 2m21s  nix shell github:nixos/nixpkgs#stack ~  stack ghc -- --version error: … while calling the 'derivationStrict' builtin at /builtin/derivation.nix:...
Rebuild your mind.
6
Всем привет, нужна как никогда, нужна помощь с IO в загрузчике. Пишу в code16 после установки сегментных регистров, пишу вывод символа. Пробовал 2 варианта: # 1 mov $0x0E, %a...
Shadow Akira
14
Карта сайта