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