Подтвердить что ты не робот

Данные Django 'ManagementForm отсутствуют или были подделаны' при сохранении modelForms с внешним ключом

Я новичок в Django, так что это может быть простой вопрос. У меня есть 2 modelForms, где есть ForeignKey для другого. Моя основная цель - сохранить индикаторы со ссылкой на "Болезнь" (FK), так что для конкретного заболевания вы можете иметь несколько индикаторов.

С приведенным ниже кодом я получаю сообщение об ошибке, когда я попал в submit, в котором говорится: "Данные ManagementForm отсутствуют или были изменены". Кроме того, код в views.py, похоже, не проверяется в третьем операторе 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>
4b9b3361

Ответ 1

В шаблоне нет формы управления diseaseFormSet и diseaseFormSet, но вы пытаетесь создать экземпляр набора форм. Для форм требуется скрытая форма управления, которая сообщает django, сколько форм находится в наборе.

Вставьте это в свой HTML

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