好吧,我对 Django Forms 不知所措,因为文档似乎没有完全涵盖我正在寻找的内容。至少,一旦你通过了最基本的形式,它似乎就会戛然而止。我非常愿意使用指向好的 文档的链接,或者指向涵盖该主题的好书的链接作为答案。基本上,这就是它的分解方式,我有 3 个模型(测验、问题、答案)。我有 20 个问题,每个测验有 4 个可能的答案(多项选择)。数字可能会有所不同,但您明白了。
我需要为这些项目创建一个表单,就像您在多项选择测验中所期望的那样。但是,当我在模板中手动创建表单而不是使用 django.forms 时,我得到以下信息:
以 10 为底的 int() 的无效文字:'test'
所以我想弄乱 django.forms,但我想我只是没有掌握如何从中构建适当表单的想法。非常感谢任何帮助,谢谢。
值得一提的是模型:
class Quiz(models.Model):
label = models.CharField(blank=True, max_length=400)
slug = models.SlugField()
def __unicode__(self):
return self.label
class Question(models.Model):
label = models.CharField(blank=True, max_length=400)
quiz = models.ForeignKey(Quiz)
def __unicode__(self):
return self.label
class Answer(models.Model):
label = models.CharField(blank=True, max_length=400)
question = models.ForeignKey(Question)
correct = models.BooleanField()
def __unicode__(self):
return self.label
最佳答案
是的,我不得不承认这里确实缺少文档和示例。对于您所描述的案例,这不是开箱即用的解决方案,因为它深入三层:测验->问题->答案。
Django 有 model inline formsets这解决了两层深的问题。生成所需表单所需要做的是:
- 加载一个测验表格(只是您模型中的一个标签文本框)
- 加载一个问题表单集:QuestionFormSet(queryset=Question.objects.filter(quiz=quiz))
- 对于每个问题,加载一个答案表单集的方式与加载问题表单集的方式大致相同
- 确保您以正确的顺序保存所有内容:quiz->question->answer,因为每个较低的级别都需要它上面项目的外键
关于python - Django 表单新手问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/621121/