Формы для нескольких вложенных связанных моделей в Django

Я разрабатываю сайт для школьников на добровольной основе, есть несколько вложенных моделей, а именно: У меня есть Вопрос, связанный с ним 1to1 Комментарий, и ForeignKey CoImage, связанный с Комментарием (мне нужна возможность добавлять много иллюстраций в Комментарий). Чтобы редактировать весь Вопрос на одной странице, я использую inlineformset_factory.

ПРОБЛЕМА: при загрузке файлов почему-то все изображения добавляются в QuImage (это иллюстрации к вопросу, которые обрабатываются в той же форме), даже те, которые были загружены в CoImage.

Мои формы:

from .models import Question, QuImage, Comment, CoImage, CoFile
from django.forms import ModelForm, inlineformset_factory

class QuestionForm(ModelForm):
    class Meta:
        model = Question
        fields = [
        'year', 'stage', 'grade', 'part', 'number',
        'text', 'tags', 'topics',
        'flag', 'type']


QuImageFormSet = inlineformset_factory(Question, QuImage, extra = 5, fields=['file', 'label'])
CommentFormSet = inlineformset_factory(Question, Comment, extra = 1, fields=['text'])
CoImageFormSet = inlineformset_factory(Comment, CoImage, extra = 3, fields=['file', 'label'])

Мои взгляды:

def add(request):


    if request.method == 'POST':

        addform = QuestionForm(request.POST)

        question = quicksave(addform)

        if question:
            quimageform = QuImageFormSet(request.POST, request.FILES, instance=question)
            quicksave(quimageform)

            commentform = CommentFormSet(request.POST, instance=question)
            comment = quicksave(commentform)

            if comment:
                coimageform = CoImageFormSet(request.POST, request.FILES, instance=comment)
                quicksave(coimageform)

        return redirect('problems')

    addform = QuestionForm()
    quimage = QuImageFormSet()
    comment = CommentFormSet()
    coimage = CoImageFormSet()
    cofile = []

    context = {'addform': addform,
    'quimage': quimage,
    'comment': comment,
    'coimage': coimage,
    'cofile': cofile}

    return render(request, 'add.html', context)

Буду очень благодарен за помощь в решении этой проблемы, вы поможете крутому проекту! Есть ли хороший простой способ работы с множеством иерархически связанных моделей в django? Весь код доступен на github. Примечание: quicksave - это мой простой скрипт, который делает form.is_valid и сохраняет его.

Вернуться на верх