私は Django にかなり慣れていないので、これは簡単な質問かもしれません。別のモデルへの ForeignKey がある 2 つの modelForms があります。私の主な目標は、特定の病気に対して複数のインジケーターを使用できるように、病気 (FK) へのリンクを使用してインジケーターを保存することです。
以下のコードでは、送信を押したときに「ManagementForm データが見つからないか、改ざんされています」というエラーが表示されます。また、views.py のコードは、return HttpResponseRedirect がある 3 番目の「if」ステートメントで検証されていないようです。ただし、データベースを確認すると、フォームの値が書き込まれています。エラーが発生した理由についてのアイデアはありますか? そしてそれを修正する方法は?
私のコードは以下の通りです:
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)
フォーム.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)
ビュー.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>