Скажите, у меня есть неизвестное количество вопросов.Например:
- Небесно-голубой [y / n]
- В какую дату вы родились [дата]
- Что такое пи [3.14]
- Что такое большое целое [100]
Теперь на каждый из этих вопросов задается отдельный, но очень специфичный для типа ответ (логическое значение, дата, число с плавающей точкой, int).Родным образом 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()
Итак, в теории это будет сделано следующим образом:
- Когда я строю свои представления, я смотрю на тип ответа и проверяю, что я только ввожу это значение.
- Но когда я хочу вытащить этот ответ обратно, он вернет данные в формате, указанномтип ответаПример 3.14 возвращается как число с плавающей точкой, а не как строка.
Как я могу выполнить такого рода автоматическое преобразование?Или кто-то может предложить лучший способ сделать это?
Спасибо большое !!