適切に正規化されたリレーショナルデータベーススキーマの場合、個別のChoice
が必要です。 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",)
そして、Question
にたどり着くことができます。 myquestion.choices.all()
でのの選択 (そしてChoice
から質問を取得します mychoice.question
を使用 。
これは、質問の選択肢の数に制限を課すことはなく、質問に少なくとも1つの関連する選択肢があることを義務付けるものでもないことに注意してください。
非常に説得力のある理由がない限り、リレーショナルデータベースを使用する場合は、適切に正規化されたスキーマが必要です(rdbmsは単なるビットバケットではなく、ロットを提供します。 便利な機能の-あなたが適切なスキーマを持っている限り、つまり)。