(Идентификатор скрытого поля) Выберите правильный вариант. Этот выбор не является одним из доступных вариантов. (Django)

Я получаю эту ошибку, когда пытаюсь отправить два набора форм. После того, как я заполняю форму и нажимаю кнопку сохранения, возникает ошибка:

(Идентификатор скрытого поля) Выберите правильный выбор. Этот выбор не является одним из доступных вариантов.

Я пытаюсь создать динамическую форму, чтобы пользователь мог добавлять новые разделы, а также новые лекции внутри раздела, когда он нажимает кнопку "Добавить". Функция добавления новой формы работает хорошо, у меня только проблема с сохранением ее в базе данных.

Views.py

def addMaterials(request, pk):

course = Course.objects.get(id=pk)
sections = CourseSection.objects.filter(course_id=pk)
materials = CourseMaterial.objects.filter(section__in=sections)

SectionFormSet  = modelformset_factory(CourseSection, form=SectionForm, extra=0)
sectionformset = SectionFormSet(request.POST or None, queryset=sections)

MaterialFormSet  = modelformset_factory(CourseMaterial, form=MaterialForm, extra=0)
materialformset = MaterialFormSet(request.POST or None, queryset=materials)

context = { 
  'course': course, 
  'sectionformset': sectionformset,
  'materialformset': materialformset,
  }

if request.method == "POST":
  if all([sectionformset.is_valid() and materialformset.is_valid()]):
    for sectionform in sectionformset:
      section = sectionform.save(commit=False)
      section.course_id = course.id
      section.save()
      for materialform in materialformset:
        material = materialform.save(commit=False)
        print(material)
        material.section_id = section #section.id or section.pk also doesn't work
        material.save()
    return('success')

return render(request, 'courses/add_materials.html', context)

Forms.py

class SectionForm(forms.ModelForm):
  class Meta:
    model = CourseSection
    fields = ['section_name', ]
    exclude = ('course_id', )

class MaterialForm(forms.ModelForm):
  class Meta:
    model = CourseMaterial
    fields = ['lecture_name', 'contents']

Второму набору форм, который является materialformset, нужен идентификатор секции из первого набора форм, поэтому в представлениях возникает два цикла. Кто-нибудь может помочь мне решить эту проблему. Я не уверен, как это исправить.

Я новичок в django, но столкнулся с такой же проблемой. Моим решением было обрабатывать по отдельности каждый набор форм внутри 'views.py'.

В файле template.html создайте тег для каждого набора форм, затем внутри этого тега поместите <input type="submit" name="form1"> (Обратите внимание, что имя важно и должно отличаться от имени формы, которую вы отправляете).

Тогда в файле views.py, вместо того, чтобы писать if all([sectionformset.is_valid() and materialformset.is_valid()]), попробуйте сделать так:

if 'form1' in request.POST:
     if sectionformset.is_valid():
         sectionformset.save()
         # other rows of your code
     return('success')

if 'form2' in request.POST:
     if materialformset.is_valid():
         materialformset.save()
         # etc. etc.
Вернуться на верх