sql >> Databasteknik >  >> RDS >> PostgreSQL

django quiz app modell för flervalsfrågor

För ett korrekt normaliserat relationsdatabasschema vill du ha ett distinkt Choice modell med en främmande nyckel 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",)

Och sedan kan du få en Question s val med myquestion.choices.all() (och få frågan från en Choice med mychoice.question ).

Observera att detta inte kommer att medföra någon begränsning av antalet val för en fråga, inte ens mandat att en fråga har minst ett relaterat val.

Om du inte har en mycket övertygande anledning att göra något annat, är ett korrekt normaliserat schema vad du vill när du använder en relationsdatabas (rdbms är mycket mer än bara bitbuckets, de erbjuder en mycket av användbara funktioner - så länge du har ett korrekt schema, det vill säga).



  1. Dela upp strängen i flera rader i Oracle

  2. Uppdaterar från MYSQL till MYSQLI

  3. AssertionError:databasanslutningen är inte inställd på UTC

  4. hur man använder sessioner och arrayer i en databasfråga för att lagra och visa data