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文檔,它是非常簡單和驗證將根據您在模型中指定的內容上採取的自動處理。