1

我想建立问卷样的应用程序。我已经建立了models.py看起来是这样的:问卷调查表 - Django的

# models.py 
class QuestionSet(models.Model): 
    name = models.CharField(max_length=100) 
    description = models.TextField(blank=True) 

    def __str__(self): 
     return "{} Question Form".format(self.name) 

class Question(models.Model): 
    q_set = models.ForeignKey(QuestionSet, 
             on_delete=models.CASCADE, 
             related_name='questions') 
    text = models.CharField(max_length=100) 

    def __str__(self): 
     return self.text 

class Answer(models.Model): 
    user = models.ForeignKey(settings.AUTH_USER_MODEL, 
           on_delete=models.CASCADE, 
           related_name='answers') 
    question = models.ForeignKey(Question) 
    text = models.CharField(max_length=100) 

    def __str__(self): 
     return "Answer to {}".format(self.question) 

但是我很努力想出这将正确地在前端显示这一点,然后验证输入数据的形式。

我试图从我Question模型显示问题的文本和添加输入字段之下,这一切,而不使用Django表单。虽然这可能看起来像是起作用,但它引发了数据验证问题,并将数据与特定问题(具有问题ID值的隐藏字段)相关联。

有什么办法,我可以创造形式,多Question S(全部属于同一QuestionSet),这将显示只读字段(Question型号的文本字段),并下相关的输入字段(Answer示范文本字段)?

回答

1

你应该让你的答案模型的ModelForm。检查出modelforms Django文档,它是非常简单和验证将根据您在模型中指定的内容上采取的自动处理。