Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 无法使用CBV更新Django中的InlineFormset_Python_Django_Python 3.x_Django Models_Django Forms - Fatal编程技术网

Python 无法使用CBV更新Django中的InlineFormset

Python 无法使用CBV更新Django中的InlineFormset,python,django,python-3.x,django-models,django-forms,Python,Django,Python 3.x,Django Models,Django Forms,我正在使用上述代码将详细信息输入表单,然后更新表单。 CreateView工作正常,正在保存数据。 UpdateView正在显示数据。当我尝试保存updateview时,它显示以下错误:- 代码流:- 首先调用prechildrendirectview。它检查数据是否已经存在。如果它存在,则调用Updateview;如果它不存在,则调用Createview 我没有用slug。相反,我在Updateview中使用get_对象。让我知道问题的原因或如何解决错误 更新 我已更改forms.py以删除

我正在使用上述代码将详细信息输入表单,然后更新表单。
CreateView工作正常,正在保存数据。
UpdateView正在显示数据。当我尝试保存updateview时,它显示以下错误:-

代码流:-
首先调用prechildrendirectview。它检查数据是否已经存在。如果它存在,则调用Updateview;如果它不存在,则调用Createview

我没有用slug。相反,我在Updateview中使用get_对象。让我知道问题的原因或如何解决错误

更新 我已更改forms.py以删除child中的错误。但交易Id仍显示错误。我还附上下面的forms.py

class PreChildrenView(CreateView):
    model = PreDealDetails2
    template_name = 'cam_app/children_form.html'
    fields = '__all__'
    success_url = reverse_lazy('forms_app:deal-entering')
    session_initial = 'children_'

    def get_initial(self,**kwargs):
        initial = super(PreChildrenView, self).get_initial(**kwargs)
        initial['deal_id'] = self.request.session['deal_id']
        return initial

    def get_context_data(self, **kwargs):
        data = super(PreChildrenView, self).get_context_data(**kwargs)
        if self.request.POST:
            data['childrens'] = ChildrenFormSet(self.request.POST)
            print('post')
        else:
            print('get')
            data['childrens'] = ChildrenFormSet()
            data['childrens'].extra = 5
            data['info'] = 'Children Details'

        return data

    def form_valid(self, form):
        print('wwwww')
        context = self.get_context_data()
        childrens = context['childrens']

        if form.is_valid():
            pass
        if childrens.is_valid():
            count = 0
            self.object = form.save()
            childrens.instance = self.object
            childrens.save()

            self.request.session[self.session_initial + 'children_count'] = count

            self.request.session['valid_children'] = True
            messages.success(self.request, 'Successfully filled Children Details')
            return self.render_to_response(self.get_context_data(form=form))
        else:
            return super(PreChildrenView, self).form_invalid(form)


class UpdatePreChildrenView(UpdateView):
    model = PreDealDetails2
    template_name = 'cam_app/children_form.html'
    fields = '__all__'
    success_url = reverse_lazy('forms_app:deal-entering')
    session_initial = 'children_'

    def get_object(self, queryset=None):
        return PreDealDetails2(deal_id = self.request.session['deal_id'])

    def get_context_data(self, **kwargs):
        data = super(UpdatePreChildrenView, self).get_context_data(**kwargs)
        if self.request.POST:
            a = PreDealDetails2.objects.get(deal_id = self.request.session['deal_id'])
            data['childrens'] = ChildrenFormSet(self.request.POST)
            print('post')
        else:
            print('get')
            data['childrens'] = ChildrenFormSet(instance=self.object)
            data['childrens'].extra = 5
            data['info'] = 'Children Details'

        return data

    def form_valid(self, form):
        print('update valid')
        context = self.get_context_data()
        childrens = context['childrens']

        if form.is_valid():
            print('wejri')
            self.object =form.save()
            if childrens.is_valid():
                childrens.instance = self.object
                childrens.save()

                count = 0
                self.request.session[self.session_initial + 'children_count'] = count

                self.request.session['valid_children'] = True
                messages.success(self.request, 'Successfully filled Children Details')
                return self.render_to_response(self.get_context_data(form=form))
            else:
                return super(UpdatePreChildrenView, self).form_invalid(form)
        else:
            print('sfeief')


class PreChildrenRedirectView(RedirectView):

    def get_redirect_url(self):
        flag = 0
        try:
            PreDealDetails2.objects.get(deal_id=self.request.session['deal_id'])
            flag = 1
        except:
            pass
        if flag == 1:
            return reverse("cam_app:update-prechildren-view")
        else:
            return reverse("cam_app:create-prechildren-view")
下面是更新后的错误截图

class ChildrenForm(forms.ModelForm):
    class Meta:
        model = PreChildrenDetails
        fields = '__all__'

    def __init__(self, *args, **kwargs):
        super(ChildrenForm, self).__init__(*args, **kwargs)
        self.fields['deal_id'].widget.attrs['readonly'] = True
        self.helper = FormHelper(self)
        self.helper.form_show_labels = False

    def clean(self):
        print('wow')
        pass

ChildrenFormSet = inlineformset_factory(PreDealDetails2,PreChildrenDetails, form=ChildrenForm, fields = '__all__', extra=1)