Ответ и значение поля выбора

У меня есть модель Questionnaire, которая имеет выпадающие поля выбора, доступные варианты выбора формируются из другой модели Choices

В модели выбора есть поле choice_text и поле choice_value. Когда пользователь выбирает выбор_текста, он публикуется в базе данных, но мне также нужно, чтобы выбор_значения был добавлен, но это значение не видно.

По сути, вопрос будет звучать так: "Каков маркетинг", и выбор будет хорошим, плохим или средним. Но значение будет 1 2 3

Я не уверен в том, как лучше всего разместить и выбор, и значение.

def get_questionnaire(request, project_id, questionnaire_id):

    # Get or Create the Response object for the parameters
    next = request.POST.get('next', '/')
    response, created = ProjectQuestionnaireResponse.objects.get_or_create(
        project_name_id=project_id, questionnaire_id=questionnaire_id
    )
    AnswerFormSet = modelformset_factory(ProjectQuestionnaireAnswer, form=AnswerForm, fields=('answer','notes',), extra=0)
    answer_queryset = ProjectQuestionnaireAnswer.objects.filter(response=response
    ).order_by('question__sequence'
    ).select_related('question')

    if request.method == 'POST':

        formset = AnswerFormSet(request.POST, form_kwargs={'question_id': questionnaire_id})
        
        instances = formset.save()
        return HttpResponseRedirect(next)
        
    else:
        pass
    # Get the list of questions for which no Answer exists
        new_answers = ProjectQuestionnaireQuestion.objects.filter(
        questionnaire__projectquestionnaireresponse=response
        ).exclude(
        projectquestionnaireanswer__response=response
        )
    # This is safe to execute every time. If all answers exist, nothing happens
    for new_answer in new_answers:
        ProjectQuestionnaireAnswer(question=new_answer, response=response).save()


    ### getting all questions related to a given questionnaire_id
    all_questions = ProjectQuestionnaireAnswer.objects.filter(response=response)  
    answer_formset = AnswerFormSet(queryset=all_questions, form_kwargs={'question_id': questionnaire_id})
    return render(request, 'project_evaluation.html', {'formset': answer_formset,'project_name':response.project_name,'title':response.questionnaire.title})
class ProjectQuestionnaireAnswer(models.Model):
    YN_Choices = [
        ('Yes', 'Yes'),
        ('No', 'No'),
        ('Unknown', 'Unknown')
    ]
    question = models.ForeignKey(ProjectQuestionnaireQuestion, on_delete=models.CASCADE)
    answer = models.ForeignKey(Choice, on_delete=models.CASCADE,null=True)
    value = models.CharField(max_length=20, blank=True)
    notes = models.TextField(blank=True)
    response = models.ForeignKey(ProjectQuestionnaireResponse, on_delete=models.CASCADE)
    
    class Meta:
        constraints = [
                models.UniqueConstraint(fields=['question','response'], name='project_unique_response2'),
            ]

    def __str__(self):
        return str(self.answer)
class Choice(models.Model):
    question = models.ForeignKey(ProjectQuestionnaireQuestion, on_delete=models.CASCADE)
    choice_text = models.CharField(max_length=200)
    choice_value = models.CharField(max_length=20, blank=True)
    choice_weight = models.IntegerField(blank=True, null=True)

    def __str__(self):
        return str(self.choice_text)

Спасибо

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