Форма анкеты - Джанго

Я пытаюсь создать приложение, похожее на анкету. Я уже построил models.py, который выглядит так:

# 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 Forms. Хотя это может выглядеть так, как будто это работает, возникает проблема проверки данных и связывания данных с конкретным вопросом (скрытое поле со значением идентификатора вопроса).

Есть ли способ, где я могу создать форму с несколькими Question (все они принадлежат одному и тому же QuestionSet), которая будет отображать поле только для чтения (текстовое поле Question модели) и связанное поле ввода ниже (текстовое поле Answer модели)?


person an0o0nym    schedule 17.11.2016    source источник


Ответы (1)


Вы должны создать ModelForm для своей модели ответа. Ознакомьтесь с документацией Django по моделям, это очень просто, и проверка будет выполнена автоматически на основе того, что вы указали в модели.

person noobinatrixxx    schedule 18.11.2016