Ошибка при сохранении ModelFormset

Я создал веб-приложение, которое представляет набор анкет. У меня есть различные модели для Question, Questionnaire, Answer и Response, которая действует как промежуточная таблица.

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

null value in column "question_id" violates not-null constraint

Models.py

class Questionnaire(models.Model):
    title = models.CharField(max_length=50, blank=False, unique=True)
    

class Question(models.Model):
    questionnaire = models.ForeignKey(Questionnaire, on_delete=models.CASCADE)
    sequence = models.IntegerField()
    question = models.TextField()

class Response(models.Model):
    project_name = models.ForeignKey(Project, on_delete=models.CASCADE)
    questionnaire = models.ForeignKey(Questionnaire, on_delete=models.CASCADE)
    user = models.CharField(max_length=50, blank=True)

    class Meta:
        constraints = [
                models.UniqueConstraint(fields= ['project_name','questionnaire'], name='unique_response'),
            ]
 

class Answer(models.Model):
    RAG_Choices = [
        ('Green', 'Green'),
        ('Amber', 'Amber'),
        ('Red', 'Red')
    ]
    question = models.ForeignKey(Question, on_delete=models.CASCADE)
    answer = models.CharField(max_length=50, blank=True, choices=RAG_Choices)
    notes = models.TextField(blank=True)
    response = models.ForeignKey(Response, on_delete=models.CASCADE)
    
    class Meta:
        constraints = [
                models.UniqueConstraint(fields=['question','response'], name='unique_answer'),
            ]

view.py

def get_questionnaire(request, project_id, questionnaire_id):

    # Get the Response object for the parameters
    response = Response.objects.get(
        project_name_id=project_id, questionnaire_id=questionnaire_id
    )

    AnswerFormSet = modelformset_factory(Answer, form=AnswerForm, fields=('answer','notes',), extra=0)

    answer_queryset = Answer.objects.filter(response=response
    ).order_by('question__sequence'
    ).select_related('question')

    if request.method == 'POST':
        form = AnswerForm(request.POST)
        answers = form.save(commit=False)
        answers.project_name_id = response
        answers.save()
        return HttpResponseRedirect(next)
    else:
        # Get the list of questions for which no Answer exists
        new_answers = Question.objects.filter(
            questionnaire__response=response
        ).exclude(
            answer__response=response
        )

        # This is safe to execute every time. If all answers exist, nothing happens
        for new_answer in new_answers:
            Answer(question=new_answer, response=response).save()

        answer_formset = AnswerFormSet(queryset=answer_queryset)
        
        template = 'pages/' + (response.questionnaire.title).replace(" ", "_").lower() + '.html'
        

    return render(request, template, {'formset': answer_formset})

Есть идеи, где я ошибаюсь?

Спасибо

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