Скажите, что у меня неизвестное количество вопросов. Например:Как хранить значения произвольного типа в одной модели Django?
- небо голубое [г/л]
- Какая дата были ваши родились [дата]
- Что такое пи [3,14]
- Что такое большое МЭГ [100]
Теперь каждый из этих вопросов представляет собой другой, но специфичный для конкретного типа ответ (логический, дата, float, 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()
Таким образом, в теории это было бы сделать следующее:
- Когда я строить свои взгляды я смотрю на тип ответа и убедитесь, что я дело только в этом значении.
- Но когда я хочу вернуть ответ, он вернет данные в формате, указанном в answer_type. Пример 3.14 возвращается как float не как str.
Как я могу выполнить такое автоматическое преобразование? Или может кто-то предложить лучший способ сделать это?
Спасибо большое!
Сохранение его в виде строки это путь, ИМХО, но имея хорошую стратегию для типажей обратно к исходному значению важно. Наличие разных полей для каждого типа ответов просто звучит необычно. –