gpt4 book ai didi

html - 使用外键链接保存 modelForms 时 Django 'ManagementForm data is missing or has been tampered with'

转载 作者:技术小花猫 更新时间:2023-10-29 12:47:23 25 4
gpt4 key购买 nike

我是 Django 的新手,所以这可能是一个简单的问题。我有 2 个 modelForms,其中有一个 ForeignKey 到另一个。我的主要目标是保存具有疾病 (FK) 链接的指标,这样对于特定疾病,您可以有多个指标。

使用下面的代码,当我点击提交时出现错误,提示“ManagementForm 数据丢失或已被篡改”。此外,views.py 中的代码似乎并未在返回 HttpResponseRedirect 的第 3 个“if”语句中进行验证。但是,当我检查我的数据库时,已经写入了表单中的值。关于为什么会出现错误的任何想法?以及如何解决?

我的代码如下:

模型.py

#Table for Disease
class Disease(models.Model):
disease = models.CharField(max_length=300)

#Tables for Indicators
class Indicator(models.Model):
relevantdisease = models.ForeignKey(Disease)
indicator = models.CharField(max_length=300)

表单.py

class DiseaseForm(forms.ModelForm):
class Meta:
model = Disease

class IndicatorForm(forms.ModelForm):
class Meta:
model = Indicator

DiseaseFormSet = inlineformset_factory(Disease,
Indicator,
can_delete=False,
form=DiseaseForm)

View .py

def drui(request):

if request.method == "POST":

indicatorForm = IndicatorForm(request.POST)

if indicatorForm.is_valid():
new_indicator = indicatorForm.save()
diseaseInlineFormSet = DiseaseFormSet(request.POST, request.FILES, instance=new_indicator)

if diseaseInlineFormSet.is_valid():
diseaseInlineFormset.save()
return HttpResponseRedirect('some_url.html')

else:
indicatorForm = IndicatorForm()
diseaseInlineFormSet = DiseaseFormSet()

return render_to_response("drui.html", {'indicatorForm': indicatorForm, 'diseaseInlineFormSet': diseaseInlineFormSet},context_instance=RequestContext(request))

模板.html

 <form class="disease_form" action="{% url drui %}" method="post">{% csrf_token %}
{{ indicatorForm.as_table }}
<input type="submit" name="submit" value="Submit" class="button">
</form>

最佳答案

您的模板中既没有diseaseFormSet 也没有diseaseFormSet 的管理表单,但您尝试实例化该表单集。表单集需要隐藏的管理表单,它告诉 django 集合中有多少表单。

将此插入到您的 HTML 中

{{ diseaseFormSet.as_table }} 
{{ diseaseFormSet.management_form }}

关于html - 使用外键链接保存 modelForms 时 Django 'ManagementForm data is missing or has been tampered with',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18022792/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com