PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

modelo de aplicativo django quiz para perguntas de múltipla escolha


Para um esquema de banco de dados relacional devidamente normalizado, você deseja um Choice distinto modelo com uma chave estrangeira em Question :
class Question(models.Model):
    question = models.CharField(...)

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

    class Meta:
        unique_together = [
            # no duplicated choice per question
            ("question", "choice"), 
            # no duplicated position per question 
            ("question", "position") 
        ]
        ordering = ("position",)

E então você pode obter uma Question 's escolhas com myquestion.choices.all() (e obtenha a pergunta de um Choice com mychoice.question ).

Observe que isso não impõe nenhuma limitação no número de opções para uma pergunta, nem mesmo exige que uma pergunta tenha pelo menos uma opção relacionada.

A menos que você tenha uma razão muito convincente para fazer o contrário, um esquema devidamente normalizado é o que você deseja ao usar um banco de dados relacional (rdbms são muito mais do que meros bitbuckets, eles oferecem muito de recursos úteis - contanto que você tenha um esquema adequado).