Pour un schéma de base de données relationnelle correctement normalisé, vous voulez un Choice
distinct modèle avec une clé étrangère sur 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",)
Et puis vous pouvez obtenir une Question
les choix de avec myquestion.choices.all()
(et obtenir la question d'un Choice
avec mychoice.question
).
Notez que cela n'imposera aucune limitation sur le nombre de choix pour une question, pas même des mandats qu'une question a au moins un choix associé.
À moins que vous n'ayez une raison très impérieuse de faire autrement, un schéma correctement normalisé est ce que vous voulez lorsque vous utilisez une base de données relationnelle (les rdbms sont bien plus que de simples bitbuckets, ils offrent beaucoup de fonctionnalités utiles - tant que vous disposez d'un schéma approprié, c'est-à-dire).