Дизайн подход для приложения с множественным выбором викторины с несколькими правильными ответами - PullRequest
0 голосов
/ 29 января 2019

Привет, я пытаюсь реализовать приложение викторины Django.Но не могу понять, какой подход я должен использовать, пытаясь создать вопрос с несколькими правильными ответами.т. е. пользователи должны иметь возможность пометить несколько вариантов в качестве правильных ответов.

Это то, что я до сих пор придумал.

class Question(models.Model):
    question = models.CharField(...)

class Choice(models.Model):
    question = models.ForeignKey("Question")
    choice = modelsCharField("Choice", max_length=50)

class Answer(models.Model):
    question = models.ForeignKey("Question")
    answers = models.ForeignKey("Choice")

Пожалуйста, объясните мне, как это сделать.правильный путь.

1 Ответ

0 голосов
/ 29 января 2019

Вам не нужна другая модель для ответа.Просто измените модель Choice следующим образом.

class Choice(models.Model):
    question = models.ForeignKey('Question')
    choice = models.CharField(...)
    is_answer = models.BooleanField(default=False) # or True.

И затем вы можете сделать несколько полезных методов в Question.

class Question(models.Model):
    question = models.CharField(...)

    def check_answer(self, choice):
        return self.choice_set.filter(id=choice.id, is_answer=True).exists()

    def get_answers(self):
        return self.choice_set.filter(is_answer=True)

Я рекомендую изменить имя вашего поля, например question в Question, choice в Choice.Это может вызвать путаницу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...