【发布时间】:2021-10-29 11:51:30
【问题描述】:
我正在 Dajngo 上编写测验应用程序。 我有一个model.py:
class Quiz(models.Model):
category = models.ForeignKey(Category, on_delete=models.CASCADE, related_name='quizzes')
name = models.CharField(max_length=200, verbose_name=_('Quiz name'))
description = models.CharField(max_length=100, verbose_name=_('Description'))
slug = models.SlugField(blank=True)
roll_out = models.BooleanField(default=False)
timestamp = models.DateTimeField(auto_now_add=True)
class Meta:
ordering = ['timestamp']
verbose_name = _('Quiz')
verbose_name_plural = _('Quizzes')
def __str__(self):
return self.name
class Question(models.Model):
quiz = models.ForeignKey(Quiz, on_delete=models.CASCADE, related_name='questions')
label = models.CharField(max_length=255, verbose_name=_('Question text'))
order = models.IntegerField(default=0, verbose_name=_('Order'))
class Meta:
verbose_name = _('Question')
verbose_name_plural = _('Questions')
def __str__(self):
return self.label
class Answer(models.Model):
question = models.ForeignKey(Question, on_delete=models.CASCADE, related_name='answers')
label = models.TextField(max_length=600, verbose_name=_('Answer text'))
is_correct = models.BooleanField(default=False, verbose_name=_('Correct answer'))
class Meta:
verbose_name = _('Answer')
verbose_name_plural = _('Answers')
def __str__(self):
return self.label
我对如何输出表单以创建带有问题的测验感到困惑。
这是我的forms.py:
class QuizAddForm(forms.ModelForm):
class Meta:
model = Answer
exclude = ('question',)
def __init__(self, *args, **kwargs):
quiz = kwargs.pop('quiz', '')
super(QuizAddForm, self).__init__(*args, **kwargs)
self.fields['question'] = forms.ModelChoiceField(queryset=Quiz.objects.filter(name='category'))
Here my views.py: # 这里我没有使用 Forms。尝试只输出结果我的代码/
class QuizDetailView(TemplateView):
template_name = 'quiz/quiz_detail.html'
def get_context_data(self, **kwargs):
quiz_id = kwargs['quiz_id']
quiz = Quiz.objects.get(id=quiz_id)
return {
'quiz': quiz
}
我想在我的模板中查看:
- 类别
- 测验
- 问题
- 回答1
- 回答2
- 答案3
- 等
【问题讨论】:
-
你能分享你的看法吗?
-
刚刚添加查看代码
标签: python django django-forms