W przypadku prawidłowo znormalizowanego schematu relacyjnej bazy danych potrzebny jest odrębny Choice
model z kluczem obcym 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 potem możesz otrzymać Question
wybory użytkownika za pomocą myquestion.choices.all()
(i otrzymaj pytanie od Choice
z mychoice.question
).
Pamiętaj, że nie nałoży to żadnych ograniczeń na liczbę opcji do wyboru dla pytania, ani nawet nie nakazuje, aby Pytanie miało co najmniej jedną powiązaną opcję.
O ile nie masz bardzo ważnego powodu, aby zrobić inaczej, właściwie znormalizowany schemat jest tym, czego potrzebujesz podczas korzystania z relacyjnej bazy danych (rdbms to znacznie więcej niż zwykłe bitbuckety, oferują dużo przydatnych funkcji - o ile masz odpowiedni schemat).