0
나는 응용 프로그램을 작성 중이므로 사용자가 취할 수있는 평가를해야합니다. 제 문제는 formset을 사용하여 각 선택 항목과 함께 질문을 나열하고 싶습니다. 이것은 형식 세트를 사용하여 수행 할 수 있지만이를 완료하는 방법은 아님을 알아야합니다. 당신이 볼 수 있듯이 내가 잘 쓰여진 모델을 가지고 있지만 양식에서 모든 코드는 실험이며 내가 정말 할 수있는 방법을 알고하지 않습니다django formsets를 사용하여 설문지를 작성하는 방법
# models.py
class Evaluation(models.Model):
"""
An evaluation is for a session.
Each session should have an evaluation
"""
session = models.OneToOneField(
Session,
related_name='evaluation',
verbose_name=u'Sesión'
)
class Meta:
verbose_name = u'Evaluación'
verbose_name_plural = u'Evaluaciones'
def __unicode__(self):
return u'Evaluación de la sesion {0}'.format(
self.session.name
)
class Question(models.Model):
"""
A question inside of an evaluation
"""
evaluation = models.ForeignKey(
Evaluation,
verbose_name=u'Evaluación',
related_name='questions'
)
question_type = models.CharField(
max_length=20,
verbose_name=u'Tipo de respuesta',
choices=QUESTION_TYPES
)
sentence = models.CharField(
max_length=255,
verbose_name=u'Pregunta'
)
position = models.IntegerField(
default=0,
verbose_name=u'Posición'
)
class Meta:
verbose_name = u'Pregunta'
verbose_name_plural = u'Preguntas'
ordering = ['position', 'sentence']
def __unicode__(self):
return self.sentence
class Choice(models.Model):
question = models.ForeignKey(
Question,
related_name='choices',
verbose_name=u'Pregunta'
)
sentence = models.CharField(
max_length=255,
verbose_name=u'Posible respuesta'
)
position = models.IntegerField(
default=0,
verbose_name=u'Posición'
)
class Meta:
verbose_name = u'Posible respuesta'
verbose_name_plural = u'Posibles respuestas'
ordering = ['position', 'sentence']
def __unicode__(self):
return self.sentence
----
# forms.py
from django.forms.models import inlineformset_factory
from models import Evaluation, Question
AnswerFormSet = inlineformset_factory(
Evaluation, Question, exclude=('question',),
extra=0, can_delete=False
)
----
# views.py
@login_required()
def session_evaluation(request, course_slug, session_position):
data = {}
course = get_object_or_404(Course, slug=course_slug)
session = Session.objects.filter(course=course).get(position=session_position)
evaluation = get_object_or_404(Evaluation, session=session)
if request.method == 'POST':
formset = AnswerFormSet(request.POST, instance=evaluation)
if formset.is_valid():
formset.save()
print 'formset valid...'
else:
formset = AnswerFormSet(instance=evaluation)
data['course'] = course
data['session'] = session
data['formset'] = formset
return render(request, 'courses/session_evaluation.html', data)
----
# template.html
<form id="evaluation" method="post" role="form">
{% csrf_token %}
{{ formset.management_form }}
<ul class="evaluation">
{% for form in formset.forms %}
<li>
{{ form.instance }}
{{ form.instance.choices.all }}
</li>
{% endfor %}
</ul>
<div class="form-group clearfix nmb">
<button type="submit" class="btn btn-primary pull-right">Enviar respuestas</button>
</div>
</form>
: 다음은 내 코드입니다.
내가 질문 문장 및 선택 목록, 같은 코드와 템플릿에되어지고있어 무엇 :
[question sentence here]? [<Choice: [choice #1 here]>, <Choice: [choice #2 here]>]
formsets 함께 할 수있는 깨끗하고 쉬운 방법은 무엇입니까가?
평가판이기 때문에 라디오 버튼으로 각 선택 목록에 질문 목록을 얻고 싶습니다.