Я недавно запустил приложение App Engine для тестирования личности.
Я бы сказал, пошли по супер простому маршруту и сохранили все о каждой викторине в одной сущности Викторины. Если вам не нужно повторно использовать вопросы между тестами, не нужно искать или каким-либо другим способом получить доступ к структуре теста, кроме проведения теста, вы можете просто сделать:
class Quiz(db.Model):
data = db.TextProperty(default=None)
Тогда данные могут иметь структуру JSON, например:
data = {
"title" : "Capitals quiz",
"questions" : [
{
"text" : "What is the capital of Finland?"
"options" : ["Stockholm, Helsinki, London"],
"correct" : 1
}
...
]
}
Вещи, для которых вы хотите индексы, вы захотите исключить из этой структуры данных. Например, в своем приложении я обнаружил, что мне нужно оставить идентификатор создателя тестов вне данных, чтобы я мог сделать запрос к хранилищу данных для всех тестов, созданных определенным человеком. Кроме того, у меня есть дата создания вне данных, так что я могу запросить последние тесты.
created = db.DateTimeProperty(auto_now_add=True)
Возможно, у вас есть другие поля, подобные этому. Как я уже говорил, это очень простой способ хранения тестов без необходимости иметь несколько объектов хранилища данных или запросов для теста. Однако на практике это хорошо работает в моем приложении для личностных тестов и становится все более популярным способом хранения данных.