我对Django相当陌生,所以这可能是一个简单的问题。我有2个modelForms,其中有一个ForeignKey到另一个。我的主要目标是将指标与疾病(FK)联系起来,这样对于特定疾病,您可以有多个指标。Django'ManagementForm数据丢失或被篡改'当保存带有外键链接的modelForms
使用下面的代码,当我点击“ManagementForm数据丢失或被篡改”提交时,出现错误。另外,views.py中的代码似乎没有在第3个'if'语句中有返回HttpResponseRedirect的验证。但是,当我检查我的数据库时,表单中的值已写入。关于为什么错误已被提出的任何想法?以及如何解决它?
我的代码如下:
models.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)
forms.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)
views.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))
template.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>
见https://docs.djangoproject.com/en/stable/topics/forms/formsets/#understanding-the-managementform。 –