说我有未知数量的问题。例如:如何在单个Django模型中存储任意类型的值?
- 天空是蓝色的[Y/N]
- 是你出生于[日期]什么日期
- 什么是圆周率[3.14]
- 什么是大INTEG [100]
现在,每个这些问题都提出了一个不同但非常具体的答案(布尔型,日期型,浮点型,整数型)。本地django可以愉快地在模型中处理这些。
class SkyModel(models.Model):
question = models.CharField("Is the sky blue")
answer = models.BooleanField(default=False)
class BirthModel(models.Model):
question = models.CharField("What date were your born on")
answer = models.DateTimeField(default=today)
class PiModel(models.Model)
question = models.CharField("What is pi")
answer = models.FloatField()
但这有明显的问题,每个问题都有一个特定的模型 - 所以,如果我们需要添加问题后,我不得不改变数据库。呸。所以,现在我想变得很花哨 - 如何设置一个由答案类型转换自动发生的模型?
ANSWER_TYPES = (
('boolean', 'boolean'),
('date', 'date'),
('float', 'float'),
('int', 'int'),
('char', 'char'),
)
class Questions(models.model):
question = models.CharField(()
answer = models.CharField()
answer_type = models.CharField(choices = ANSWER_TYPES)
default = models.CharField()
所以从理论上讲,这将做到以下几点:
- 当我建立我的意见我看答案的类型,并确保我 只是摆在那价值。
- 但是当我想把这个回答拉出来时,它会以answer_type指定的格式返回数据。例3.14作为浮点数而不是str返回。
如何执行这种自动转换?或者可以有人建议一个更好的方法来做到这一点?
非常感谢!
把它作为一个字符串是去了,恕我直言的方式,但具有类型转换回原来的值一个好的策略是非常重要的。每种类型的答案都有不同的字段,听起来很麻烦。 – 2010-04-20 22:00:43