python - Django 表单新手问题

标签 python django forms

好吧,我对 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这解决了两层深的问题。生成所需表单所需要做的是:

  1. 加载一个测验表格(只是您模型中的一个标签文本框)
  2. 加载一个问题表单集:QuestionFormSet(queryset=Question.objects.filter(quiz=quiz))
  3. 对于每个问题,加载一个答案表单集的方式与加载问题表单集的方式大致相同
  4. 确保您以正确的顺序保存所有内容:quiz->question->answer,因为每个较低的级别都需要它上面项目的外键

关于python - Django 表单新手问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/621121/

相关文章:

forms - Grails 数据绑定(bind)隐藏表单字段

java - 将数据提交到表单并与网站交互,自动化

python - PIL - 从 JPG 和 PNG 框架制作 1 个 PNG

python - Django 如何对字典列表进行分页

python - 带有 TikZ 样式路径装饰的 Matplotlib 注释箭头

python - Azure AKS/容器应用程序无法使用托管标识访问 key 保管库

django - 如何将git repo的子目录部署到elastic beanstalk

python - 具有 ManyToManyField 的模型

django - 将对象标签作为列表返回

php - 如何允许一些特殊字符以及如何使用 PHP pdo 将它们插入 MySQL