我正在做一种调查(评估)。
我的网络在一个页面中有多个广播选择(字段)。
例如,我在一个页面中有3个问题,每个问题有5个无线电选择。如果我在No.1问题中选择选择3然后在2号问题中选择4,则No.1选择消失(选择3)。我想这是No.1和No.2之间的冲突。
我猜错了,因为我在同一页面中显示了很多表单(不是一个表单)。但我不知道为什么。 帮帮我...
我的守则正在追随(没关系韩国人)
HTML
{% extends 'base.html' %}
{% load staticfiles %}
{% block content %}
<form method="post" id='evaluate_answer_form' novalidate>
{% csrf_token %}
{% for q, form in questions %} # q:question object / form:answer form
<p>
{# Include the hidden fields #}
{% for hidden in form.hidden_fields %}
{{ hidden }}
{% endfor %}
{# Include the visible fields #}
{% for field in form.visible_fields %}
<div class="fieldWrapper">
{{ field.errors }}
{{ q.ask }} {{ field }}
</div>
{% endfor %}
</p>
{% endfor %}
<button type="submit">Submit</button>
</form>
{% endblock %}
forms.py
class AnswerForm(forms.ModelForm):
AGREEMENT_CHOICES = (
('5', '매우 동의함'),
('4', '동의함'),
('3', '보통임'),
('2', '동의하지 않음'),
('1', '매우 동의하지 않음')
)
class Meta:
model = Answer
fields = ['text']
def __init__(self, *args, **kwargs):
# input = question & course
question = kwargs.pop('question')
course = kwargs.pop('course')
self.question = question
super(AnswerForm, self).__init__(*args, **kwargs)
if question.ans_type == 'a':
self.fields['text'] = forms.ChoiceField(
choices = AGREEMENT_CHOICES, widget=forms.RadioSelect()
)
elif question.ans_type == 's':
self.fields['text'] = forms.CharField()
models.py
class Question(models.Model):
ask = models.CharField('질문 내용', max_length=300)
ans_type = models.CharField('대답 유형', max_length=10, default='s')
response = models.ForeignKey(Response, on_delete=models.SET_NULL, null=True)
class Answer(models.Model):
text = models.CharField('대답', max_length=500, blank=True, null=True)
choice = models.IntegerField('점수', blank=True, null=True)
answered = models.BooleanField('대답 여부', default = False)
question = models.ForeignKey(Question, on_delete=models.CASCADE)
response = models.ForeignKey(Response, on_delete=models.CASCADE, null=True)
views.py
(...)
c = course # Course object
questions=[]
for q_set in c.questionset_set.all(): #Course <- Questionset <- Question
for q in q_set.question_set.all():
answer = Answer()
answer.question = q
answer.response = response
answer.save()
questions.append([q, AnswerForm(instance=answer, question=q, course=c)])
questions.sort(key=lambda x:x[0].id) #sort
return render(request, 'tas/evaluate_answer.html', {'questions': questions})