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 ответов

18 просмотров

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

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

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

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

а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
Добрый день. Хочу сделать отрисовку по команде на панели. Почему-то рисуется только при втором вызове. С чем может быть связано, не подскажете? procedure TForm1.FormDblClick(...
Kirill Filippenok
20
Всем доброго дня! Подскажите может кто использовал связку Pagebuilder + Clientsetting. Сами параметры с типом pagebuilder в модуле Clientsetting работают нормально, можно такж...
Александр Добриков
12
А почему в си некоторые вещи работают с двойными кавычками некоторые с одинарными? Нельзя было все сделать с одними или чтоб работало с разными? например чтоб выводить строки ...
.
15
Всем привет! Нужен совет от опытных. Переношу свой проект с Делфи 10.2 Токио на Лазарус 3.2 установленный через инсталлятор fpcupdeluxe-x86_64-win64. При импортировании проект...
Дмитрий Завгородний
7
Эх кто-то пришел и весь праздник испортил :( You need complex FBX scene importing setup to change things on import? good luck with that. You need navigation and pathfinding? g...
Serg Gini
5
Всем привет! procedure TForm1.FormCreate(Sender: TObject); type TStartEnd = record S: Byte; E: Byte; end; var a, b: TStartEnd; begin {1} a.S := 1; {2} a.E := 2; ...
Руслан Михайлович
10
Всем привет!) я тут новенький и пытаюсь освоить evolution методом тыка. У меня при переходе между папками файлов выскакивают вот такие уведомления Можете подсказать как их от...
Диман Samoed
10
Всем привет! Подскажите. Я написал приложение на Delphi 10.2 Tokyo под Windows 10. И передо мной стал вопрос о том чтобы сделать это приложение кроссплатформенным (под Linux и...
Дмитрий Завгородний
24
Какого хера? /Sources/App/Modules/User/Models/UserLinkApple.swift:21:20: warning: stored property '_id' of 'Sendable'-conforming class 'UserLinkApple' is mutable @ID(...
Alexander Sherbakov
14
Карта сайта