保存中间M2M选项卡时缺少管理表单数据

2024-09-29 19:19:03 发布

您现在位置:Python中文网/ 问答频道 /正文

表单集验证时管理表单数据丢失错误

当我试图用中间的m2m表子窗体集保存父窗体时,会出现此错误。我不知道如何解决,因为在回溯中缺乏关于这个错误的信息。请帮忙!在

模型.py

class Material(models.Model):
    name = models.CharField(max_length=200)
    familiy = models.ForeignKey(Material_family, on_delete=models.CASCADE, null=True)
…   

class Purchase(models.Model):
    number = models.IntegerField()
    date = models.DateField()
    …

class Purchase_detail(models.Model):        
    material = models.ForeignKey(Material, on_delete=models.CASCADE)
    purchase = models.ForeignKey(Purchase, on_delete=models.CASCADE)
    quantity = models.IntegerField()
    unit_value = models.IntegerField(default=0)

表单.py

^{pr2}$

视图.py

def purchase_new(request, purchase_id=None, *args, **kwargs):
    template = 'erp/purchase_form.html'
    if purchase_id:
        inst = Purchase.objects.get(pk=purchase_id)
    else:
        inst = Purchase()
    if request.method == 'POST':
        form = PurchaseModelForm(request.POST or None, request.FILES, prefix='purchase', instance=inst)
        formset = DetailFormSet(request.POST or None, request.FILES, prefix='detail')
        form_valid = form.is_valid()
        if form_valid:
            purchase = form.save()
            formset.save(commit=False)
            for f in formset:
                f.compra = purchase
                f.save()
            return redirect('...')
    else:
        form = PurchaseModelForm(prefix='purchase',instance=inst)
        formset = DetailFormSet(prefix='purchase')
    context = { 'form': form, 'formset': formset }
    return render(request, template, context )

这是模板

<form method='POST' action="">
                    {% csrf_token %}
                    <div>
                        <h5 style="font-weight: bold;">Datos de la Compra</h5>
                        {% crispy form form.helper %}<hr/>
                        <h5 style="font-weight: bold;">Detalle de la Compra <a class="btn btn-rounded btn-sm btn-icon btn-default add-new-form"><i class="fa fa-plus text-success"></i></a></h5>
                    </div>
                    {{ formset.management_form|crispy }}
                    {% for x in formset %}
                    <div class="form-inline">
                        {{ x|crispy }}
                        <hr>
                    </div>
                    {% endfor %}
                    <div class="form-inline" id="empty-row">
                        {{ formset.empty_form|crispy  }}
                        <hr>    
                    </div>
                    <button class="btn btn-block btn-primary" >Guardar</button>
                </form>

回溯是: 回溯:

文件“/Users/jlattus/Dev/italuzbi/lib/python3.5/site-packages/django/core/handlers/异常.py“在里面 41response=get_response(请求)

文件“/Users/jlattus/Dev/italuzbi/lib/python3.5/site-packages/django/core/handlers/基准.py“在你得到你的回应 187响应=self.process\u异常\u by_中间件(e,请求)

文件“/Users/jlattus/Dev/italuzbi/lib/python3.5/site-packages/django/core/handlers/基准.py“在你得到你的回应 185response=wrapped_callback(请求,*callback_args,**callback_kwargs)

文件“/Users/jlattus/Dev/italuzbi/lib/python3.5/site-packages/django/contrib/auth/装饰工.py“在“包装”视图中 23return view_func(请求,*args,**kwargs)

文件“/Users/jlattus/Dev/italuzbi/src/erp/视图.py“在购买中 415表单集.保存(提交=错误)

文件“/Users/jlattus/Dev/italuzbi/lib/python3.5/site-packages/django/forms/模型.py“保存中 666返回self.save_现有的_对象(提交)+self.save_新对象(提交)

文件“/Users/jlattus/Dev/italuzbi/lib/python3.5/site-packages/django/forms/模型.py“在保存现有的\u对象中 768如果没有self.initial_表单公司名称:

文件“/Users/jlattus/Dev/italuzbi/lib/python3.5/site-packages/django/forms/表单集.py“以初始形式 189返回自我形式[:初始计数表单\u()]

文件“/Users/jlattus/Dev/italuzbi/lib/python3.5/site-packages/django/utils/函数.py“在获取 35res=实例。dict[自身名称] = 自我功能(实例)

文件“/Users/jlattus/Dev/italuzbi/lib/python3.5/site-packages/django/forms/表单集.py“在形式上 144我在射程内(self.total_form_计数())]

文件“/Users/jlattus/Dev/italuzbi/lib/python3.5/site-packages/django/forms/表单集.py“总共有多少 116最小返回值(自我管理表。已清理的“数据”[窗体总数],自身绝对最大值)在

文件“/Users/jlattus/Dev/italuzbi/lib/python3.5/site-packages/django/utils/函数.py“在获取 35res=实例。dict[自身名称] = 自我功能(实例)

文件“/Users/jlattus/Dev/italuzbi/lib/python3.5/site-packages/django/forms/表单集.py“以管理形式 98code='missing_management_form'

异常类型:ValidationError at/compra/new/ 异常值:['Los datos de ManagementForm faltan o han sido manipulados


Tags: 文件djangopydevform表单modelslib

热门问题