Please join the meeting now let's quickly fix it .
https://us04web.zoom.us/j/77729655336?pwd=c1o2Q0JQOFJiYm5hTlJTYjgra0dOQT09
On Monday, May 4, 2020 at 4:37:39 PM UTC+1, Sergei Sokov wrote:
>
> I have two forms in one template, but one of them doesn't have data to my
> database.
> Why does it happen and how to fix it?
>
> When I fill out the Pack form and press "submit" the terminal shows that:
> "POST" /sklad HTTP/1.1" 200 9937
> This data doesn't save to my database.
>
> When I fill out the Sklad form and press "submit" the terminal shows that:
> "POST" /sklad HTTP/1.1" 302 0
> This data saves to my database fine.
>
> views.py
> 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
> kwargs['pack_form'] = PackForm
> kwargs['list_sklad'] = Sklad.objects.all().order_by('material')
> kwargs['list_pack'] = Pack.objects.all().order_by('name_pack')
> 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()
> return super().form_valid(form)
>
> models.py
> class Sklad(models.Model):
> author = models.ForeignKey(User, on_delete = models.CASCADE,
> verbose_name='автор склада', null=True)
> material = models.CharField('название', max_length=200)
> unit = models.CharField('единица измерения', max_length=200)
> description = models.CharField('описание', max_length=200, null=True)
> price_buy = models.IntegerField('цена закупки', )
> price_sell = models.IntegerField('цена продажи', )
> amount = models.IntegerField('количество', default='0')
>
> def __str__(self):
> return self.material
>
> class Pack(models.Model):
> author = models.ForeignKey(User, on_delete = models.CASCADE,
> verbose_name='автор упаковки', null=True)
> name_pack = models.CharField('название', max_length=100)
> price_pack = models.IntegerField('цена', )
>
> def __str__(self):
> return self.name_pack
>
>
> forms.py
> class SkladForm(forms.ModelForm):
> class Meta:
> model = Sklad
> fields = (
> 'material',
> 'unit',
> 'description',
> 'price_buy',
> 'price_sell',
> 'amount',
> )
>
> def __init__(self, *args, **kwargs):
> super().__init__(*args, **kwargs)
> for field in self.fields:
> self.fields[field].widget.attrs['class'] = 'form-control'
>
> class PackForm(forms.ModelForm):
> class Meta:
> model = Pack
> fields = (
> 'name_pack',
> 'price_pack',
> )
>
> def __init__(self, *args, **kwargs):
> super().__init__(*args, **kwargs)
> for field in self.fields:
> self.fields[field].widget.attrs['class'] = 'form-control'
>
>
>
--
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 [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/django-users/dd44ad0a-7059-4226-9200-ebb24fcf6b1d%40googlegroups.com.