代码之家  ›  专栏  ›  技术社区  ›  trouselife

django2:使用手动方法从视图中的模型formset将实例保存到模型

  •  0
  • trouselife  · 技术社区  · 6 年前

    我有一个在视图中创建模型实例的表单集。但是,这是很多代码,要将其分开,我使用手动类视图方法:

    class ClassView(LoginRequiredMixin, GroupRequiredMixin, View):
    
          template_name = 'form.html'
          form = Form
    
          get(self, request, *args, **kwargs):
    
              formset = modelformset_factory(
                    Model,
                    form=self.form,
                    formset=BaseFormSet,
                    extra=0,
                )
    
             self.formset = formset(queryset=qs)
    
    
        def post(self, request, *args, **kwargs):
    
            user = request.user
    
            formset = modelformset_factory(
                        Model,
                        form=self.formform,
                        formset=BaseCRVFormSet,
                        extra=0,
                    )
    
            if request.POST['submit'] == 'Submit form':
    
                sample_id = request.POST.get('sample_id')
                obj = Sample.objects.get(
                            id=sample_id
                        )
    
                formset = formset(request.POST)
    
                if formset.is_valid():
    
                    for form in formset:
                        self.reportVariant(form)
    
                    self.reportSample(obj, user)
    
    
    
        def reportVariant(self, form):
    
             crv_obj = form.save(commit=False)
             report = form.clean_report()           
    
            if report == 'report':
    
                # Final report for variant
                crv_obj.final_reported = True
                crv_obj.final_report_date = timezone.now()
                crv_obj.final_vasr_id = crv_obj.primary_vasr_id
    
                crv_obj.primary_vasr_id = None
    
                crv_obj.save()
    
            else:
                ...more...
    
    
        def reportSample(self, obj, user):
    
              ... more saving to model ...
    

    我的问题是,我应该在我的形式课上这样做吗?在清理之后,是否将reportvariant()方法作为窗体类的附加调用?

    0 回复  |  直到 6 年前