Para um esquema de banco de dados relacional devidamente normalizado, você deseja um
Choice
distinto modelo com uma chave estrangeira em 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",)
E então você pode obter uma
Question
's escolhas com myquestion.choices.all()
(e obtenha a pergunta de um Choice
com mychoice.question
). Observe que isso não impõe nenhuma limitação no número de opções para uma pergunta, nem mesmo exige que uma pergunta tenha pelo menos uma opção relacionada.
A menos que você tenha uma razão muito convincente para fazer o contrário, um esquema devidamente normalizado é o que você deseja ao usar um banco de dados relacional (rdbms são muito mais do que meros bitbuckets, eles oferecem muito de recursos úteis - contanto que você tenha um esquema adequado).