Thank you for answer.
I have this error when I try save data for SkladForm, when I press submit
Request Method: POST
Request URL: http://192.168.0.249:8000/sklad
Django Version: 3.0.5
Exception Type: KeyError
Exception Value: 

'pack_form'

Exception Location: /var/workspace/myp4/webprint/print/views.py in 
form_valid, line 362
line 362 is       pack_form = context['pack_form']

And the PackForm is empty, when I call it.

class SkladCreateView(LoginRequiredMixin, CustomSuccessMessageMixin, 
CreateView):
    model = Sklad
    template_name = 'sklad.html'
    form_class = SkladForm
    success_url = reverse_lazy('sklad')
    success_msg = 'Материал сохранён'
    def get_context_data(self, **kwargs):
        context = super(SkladCreateView, self).get_context_data(**kwargs)
        if self.request.POST:
            context['pack_form'] = PackForm(self.request.POST)
        else:
            context['pack_form'] = PackForm()
        return super().get_context_data(**kwargs)

        kwargs['list_sklad'] = Sklad.objects.all().order_by('material')
        kwargs['list_pack'] = Pack.objects.all().order_by('name_pack')
        kwargs['list_hole'] = Hole.objects.all().order_by('name_hole')
        return super().get_context_data(**kwargs)     
 
    def form_valid(self, form):
        self.object = form.save(commit=False)
        self.object.author = self.request.user
        self.object.save()

        context = self.get_context_data()
        pack_form = context['pack_form']
        if pack_form.is_valid():
            pack_form.instance = self.object
            pack_form.save()
        return super().form_valid(form)




вторник, 5 мая 2020 г., 11:30:57 UTC+2 пользователь Sherif Adigun написал:
>
> Try this code. Instead of using kwargs[], context is most common.
>
>
> class SkladCreateView(LoginRequiredMixin, CustomSuccessMessageMixin, 
> CreateView):
>  model = Sklad
>  template_name = 'sklad.html'
>  form_class = SkladForm
>  success_url = reverse_lazy('sklad')
>  success_msg = 'Материал сохранён'
>
>  def get_context_data(self, **kwargs):
>   #kwargs['sklad_form'] = SkladForm # you do not need this anymore since 
> you have set the form_class above.
>   context = super(SkladCreateView, self).get_context_data(**kwargs)
>   if self.request.POST:
>    context['pack_form'] = PackForm(self.request.POST)
>   else:
>    context['pack_form'] = PackForm()
>   return super().get_context_data(**kwargs)
>  
>  def form_valid(self, form):
>   self.object = form.save(commit=False)
>   self.object.author = self.request.user
>   self.object.save()
>   context = self.get_context_data()
>   pack_form = context['pack_form']
>   if pack_form.is_valid():
>    pack_form.instance = self.object
>    pack_form.save()
>   return super().form_valid(form)
>
>
>
>
>
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-users+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/6a47b1be-e884-498e-817f-c91771de4ee2%40googlegroups.com.

Reply via email to