sql >> Base de Datos >  >> RDS >> PostgreSQL

Modelo de aplicación Django Quiz para preguntas de opción múltiple

Para un esquema de base de datos relacional correctamente normalizado, desea una Choice distinta modelo con clave foránea en 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",)

Y luego puedes obtener una Question opciones de con myquestion.choices.all() (y obtenga la pregunta de un Choice con mychoice.question ).

Tenga en cuenta que esto no impondrá ninguna limitación en la cantidad de opciones para una pregunta, ni siquiera exige que una pregunta tenga al menos una opción relacionada.

A menos que tenga una razón muy convincente para hacer lo contrario, lo que desea es un esquema correctamente normalizado cuando utiliza una base de datos relacional (los rdbms son mucho más que meros bitbuckets, ofrecen mucho de funciones útiles, siempre que tenga un esquema adecuado).