Untuk skema basis data relasional yang dinormalisasi dengan benar, Anda menginginkan Choice
yang berbeda model dengan kunci asing di 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",)
Dan kemudian Anda bisa mendapatkan Question
pilihan dengan myquestion.choices.all()
(dan dapatkan pertanyaan dari Choice
dengan mychoice.question
).
Perhatikan bahwa ini tidak akan memaksakan batasan apa pun pada jumlah pilihan untuk Pertanyaan, bahkan tidak mengamanatkan bahwa Pertanyaan memiliki setidaknya satu Pilihan terkait.
Kecuali Anda memiliki alasan yang sangat kuat untuk melakukan sebaliknya, skema yang dinormalisasi dengan benar adalah apa yang Anda inginkan saat menggunakan database relasional (rdbms lebih dari sekadar bitbucket, mereka menawarkan banyak fitur yang berguna - selama Anda memiliki skema yang tepat, yaitu).