PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

modello di app django quiz per domande a scelta multipla

Per uno schema di database relazionale correttamente normalizzato, si desidera una distinta Choice modello con una chiave esterna su 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 poi puoi ottenere una Question 's con myquestion.choices.all() (e ottieni la domanda da una Choice con mychoice.question ).

Tieni presente che ciò non imporrà alcuna limitazione al numero di scelte per una domanda, nemmeno imponendo che una domanda abbia almeno una scelta correlata.

A meno che tu non abbia una ragione molto convincente per fare altrimenti, uno schema adeguatamente normalizzato è ciò che desideri quando usi un database relazionale (rdbms sono molto più di semplici bitbucket, offrono molto molto di funzioni utili, purché tu abbia uno schema adeguato, cioè).