Pro správně normalizované schéma relační databáze potřebujete odlišnou Choice
model s cizím klíčem na 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",)
A pak se můžete dostat na Question
možnosti pomocí myquestion.choices.all()
(a získejte otázku z Choice
pomocí mychoice.question
).
Všimněte si, že to nestanoví žádné omezení počtu možností pro otázku, dokonce ani nenařizuje, aby otázka měla alespoň jednu související volbu.
Pokud nemáte velmi pádný důvod k opakování, správně normalizované schéma je to, co chcete při používání relační databáze (rdbms jsou mnohem víc než pouhé bitbuckety, nabízejí toho hodně užitečných funkcí – pokud máte správné schéma).