PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

modèle d'application django quiz pour les questions à choix multiples

Pour un schéma de base de données relationnelle correctement normalisé, vous voulez un Choice distinct modèle avec une clé étrangère sur 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",)

Et puis vous pouvez obtenir une Question les choix de avec myquestion.choices.all() (et obtenir la question d'un Choice avec mychoice.question ).

Notez que cela n'imposera aucune limitation sur le nombre de choix pour une question, pas même des mandats qu'une question a au moins un choix associé.

À moins que vous n'ayez une raison très impérieuse de faire autrement, un schéma correctement normalisé est ce que vous voulez lorsque vous utilisez une base de données relationnelle (les rdbms sont bien plus que de simples bitbuckets, ils offrent beaucoup de fonctionnalités utiles - tant que vous disposez d'un schéma approprié, c'est-à-dire).