Ответ и значение поля выбора
У меня есть модель 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)
Спасибо