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å).