因此,我对我的项目有此看法,这是为了保存产品的公式,其中有两种形式:公式和公式的行(Formula_materia)。 问题是,当我尝试更新内联表单集时会引发表单验证错误。它无法识别主键,并指出该字段为空(它是AutoField,并且不在表单上呈现)。 我搜索了所有网络,但找不到可以帮助我的答案。
错误: pkid_formula_materia(此字段为必填)
在视图上可能有错误?
视图(我知道它很大且令人困惑,对不起):
def formula_produto(request, id_produto):
produto = Produto.objects.get(pkid_produto=id_produto)
# Checks if there is already a formula to that product
try:
Formula = Formulaproduto.objects.get(fkid_produto=id_produto)
except:
Formula = None
# Makes the formset based on two models
formset_materias = inlineformset_factory(Formulaproduto,Formula_materia,extra=0,min_num=1,form=Formula_materiaForm)
if request.POST:
with transaction.atomic():
form_formula = FormulaprodutoForm(request.POST, instance=Formula)
if form_formula.is_valid():
formula = formula.save(commit=False)
formula.fkid_produto = produto
formula.save()
# Use as instance the existing Formula or the newly created
if Formula and Formula != None:
forms_materia = formset_materias(request.POST, instance=Formula)
else:
forms_materia = formset_materias(request.POST, instance=formula)
for form in forms_materia:
if form.is_valid(): # Here it does not validate
form.save()
return HttpResponseRedirect(url)
else:
form_formula = FormulaprodutoForm(instance=Formula)
forms_materia = formset_materias(instance=Formula)
context = {
"form_formula": form_formula,
"forms_materia": forms_materia,
"produto": produto,
}
return render(request, "iframe/produtos/formula_produto.html", context)