Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- =====forms=====
- class AdsForm(ModelForm):
- class Meta:
- model = Ads
- exclude = ()
- PictureFormSet = inlineformset_factory( Ads, Picture, form=AdsForm)
- =====view (на примере Update; два варианта: второй закоммичен)=====
- class AdsEdit(LoginRequiredMixin, UpdateView):
- model = Ads
- template_name = 'main/ads_add.html'
- # fields = ('name', 'description', 'seller', 'category', 'tags', 'price',)
- form_class = AdsForm
- extra_context = {'new': False}
- login_url = '/'
- def get_context_data(self, **kwargs):
- context = super().get_context_data(**kwargs)
- if self.request.POST:
- context['pictures'] = PictureFormSet(self.request.POST, self.request.FILES, instance=self.object)
- else:
- context['pictures'] = PictureFormSet(instance=self.object)
- return context
- def form_valid(self, form):
- self.object = form.save(commit=False)
- context = self.get_context_data()
- pictures = context['pictures']
- if form.is_valid() and pictures.is_valid:
- self.object = form.save()
- pictures.instance = self.object
- pictures.save()
- return super().form_valid(form)
- else:
- print('Не валидируется!')
- return self.render_to_response(self.get_context_data(form=form))
- # def post(self, request, *args, **kwargs):
- # self.object = self.get_object()
- # form_class = self.get_form_class()
- # form = self.get_form(form_class)
- # pictures_form = PictureFormSet(self.request.POST, instance=self.object)
- # if form.is_valid() and pictures_form.is_valid():
- # return self.form_valid(form, pictures_form)
- # else:
- # return self.form_invalid(form, pictures_form)
- #
- # def form_valid(self, form, pictures_form):
- # self.object = form.save()
- # pictures_form.instance = self.object
- # pictures_form.save()
- # return HttpResponseRedirect(self.get_success_url())
- #
- # def form_invalid(self, form, pictures_form):
- # print('Не валидируется!')
- # return self.render_to_response(
- # self.get_context_data(form=form,
- # pictures_form=pictures_form))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement