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

django quiz app model til multiple choice spørgsmål

For et korrekt normaliseret relationsdatabaseskema vil du have et særskilt Choice model med en fremmednøgle på 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",)

Og så kan du få et Question 's valg med myquestion.choices.all() (og få spørgsmålet fra en Choice med mychoice.question ).

Bemærk, at dette ikke vil pålægge nogen begrænsning på antallet af valgmuligheder for et spørgsmål, ikke engang påbud om, at et spørgsmål har mindst ét ​​relateret valg.

Medmindre du har en meget tvingende grund til at gøre andet, er et korrekt normaliseret skema, hvad du ønsker, når du bruger en relationel database (rdbms er meget mere end blot bitbuckets, de tilbyder en masse af nyttige funktioner - så længe du har et ordentligt skema, altså).



  1. SQLAlchemy:Tjek om en given værdi er på en liste

  2. Forkert datetime-værdi for funktionen str_to_date

  3. Hvorfor indsæt-vælg til variabel tabel fra XML-variabel så langsom?

  4. Hibernate @Enumerated ser ud til at blive ignoreret