Как сохранить ответы на вопросы пользователей в моделях Django? - PullRequest
0 голосов
/ 24 мая 2018

У меня есть следующая модель Викторины: -

class Quiz(models.Model):
    quiz_name = models.CharField(max_length=200)

    def __unicode__(self):
        return self.quiz_name

У каждой модели Викторины есть набор Вопросов, и у каждого Вопроса есть множество возможных возможных ответов.Вопрос также имеет поле для правильного ответа.Ниже приведены модели для вопросов и ответов: -

Модель ответа: -

class Answer_Options(models.Model):
    text = models.CharField(max_length=200)

    def __unicode__(self):
        return self.text

Модель вопроса: -

class Quiz_Question(models.Model):
    quiz = models.ForeignKey(Quiz, on_delete=models.CASCADE, related_name='questions')
    text = models.CharField(max_length=200)
    possible_answers = models.ManyToManyField(Answer_Options)
    correct = models.ForeignKey(Answer_Options, related_name="correct", default=None, on_delete=models.CASCADE)

    def __unicode__(self):
        return self.text

Теперь проблема, с которой я сталкиваюсь,что, как я могу сохранить, какой пользователь выбрал, какой вариант?Есть ли способ сделать это?

Ответы [ 2 ]

0 голосов
/ 24 мая 2018

Это невозможно с существующей моделью.Вам нужно создать другую модель для ответов на вопросы теста и сохранить там следующие поля:

  • идентификатор опции
  • идентификатор пользователя

Вам не нужноздесь вопрос или идентификатор теста, потому что вы можете получить его через идентификатор опции.

Если вы используете модель User, вот пример кода модели:

class QuizAnswer(models.Model):
    answer_option = models.ForeignKey(Answer_Options)
    user = models.ForeignKey(User)

Кстати, вашназвания моделей не соответствуют стандартам.

0 голосов
/ 24 мая 2018

я бы пошел с

qs = Quiz.objects.all()
obj = qs.filter(name__istartswith="What is the answer to the universer an everything")
if answer == obj.correct:
    #he is right
    #maybe save to session
else:
    #wrong
...