Para un esquema de base de datos relacional correctamente normalizado, desea una Choice
distinta modelo con clave foránea en 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",)
Y luego puedes obtener una Question
opciones de con myquestion.choices.all()
(y obtenga la pregunta de un Choice
con mychoice.question
).
Tenga en cuenta que esto no impondrá ninguna limitación en la cantidad de opciones para una pregunta, ni siquiera exige que una pregunta tenga al menos una opción relacionada.
A menos que tenga una razón muy convincente para hacer lo contrario, lo que desea es un esquema correctamente normalizado cuando utiliza una base de datos relacional (los rdbms son mucho más que meros bitbuckets, ofrecen mucho de funciones útiles, siempre que tenga un esquema adecuado).