Django форма с инлайн / вложенными данными

Обновить

April 2019

Просмотры

172 раз

1

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

models.py

def Question(models.Model):
  title = models.CharField('Title', max_length=200)
  ...

def AdditionalData(models.Model):
  question = models.ForeignKey(Question, related_name='additionalData`, on_delete=models.CASCADE)
  upload = models.FileField('Data', upload_to=...)

forms.py

class QuestionForm(forms.ModelForm)
   class Meta:
      model = Question
      fields = '__all__'  # for example purposes only

 AdditionalDataFormset = forms.inline_formset_factory(models.Question, models.AdditionalData, fields=('upload',), extra=1)

views.py

class EditQuestion(DetailsView):
    def get(request, pk, **kwargs):
        question = get_object_or_404(Question, pk=pk)
        question_form = QuestionForm(instance=question)
        additional_data_formset = AdditionalDataFormset(instance=question)

        context = {
              'question_form': question_form,
              'additional_data_formset': additional_data_formset
        }
         return render(request,'editor.html', context)

И, наконец, часть моего шаблона editor.html

 <form method="post" action='url...'>
       {% csrf_token %}
       <fieldset>
          {{ question_form|crispy }}
       </fieldset>

       {{ additional_data_formset.management_form }}
       {{ additional_data_formset.non_form_errors }}
       <fieldset>
         {% for additional_data in additional_data_formset %}
               {{ additional_data|crispy }}
         {% endfor %}
       </fieldset>

       <button type="submit" class="save btn btn-default" value="Submit">Submit</button>
 </form>

По какой-то причине, когда я использую встроенный FormSets «Отправить» кнопка не работает (ничего не происходит, когда я нажимаю его). При попытке заставить отправить форму (с помощью JQuery OnClick кнопки отправки) Эта ошибка возникает:

«ManagementForm данные отсутствуют или были подделаны»

Я не могу понять, почему это происходит. Что касается гнездового метода, я не смог найти пример, который демонстрирует его только две модели, так что я не уверен в том, как использовать его в этом обстоятельстве. Как вы можете видеть выше, я сделал звонок в «management_form» отлично, так что я не знаю, почему это происходит.

Дополнительная информация: Вопрос может иметь любое количество файлов (экземпляры AdditionalData), связанное с ним.

Любая информация на выше ошибки или советы о том, как реализовать такую ​​форму, которая может иметь переменное число подформ было бы весьма признателен.

0 ответы