Я несколько новичок в системе моделей приложений Google (и во всех моделях баз данных в этом отношении), и я пытаюсь выяснить, как заставить модель иметь коллекцию экземпляров модели в качестве одного из свойств. Мне кажется, что должен быть лучший способ смоделировать данные, которые у меня есть.
Итак, вот пример. Я пишу журнал веб-приложение. Я хочу разрешить пользователям иметь несколько журналов, как определено моделью Journals
#Represents a collection of journals
class Journals(db.Model):
user = db.UserProperty()
journals = db.ListProperty(int) #there has to be a better way of keeping track of journals then by a list of their id
В свойстве journals
я храню список идентификаторов модели Journal
(показано ниже).
class Journal(db.Model):
user = db.UserProperty()
name = db.StringProperty()
date_created = db.DateTimeProperty(auto_now_add=True)
last_modified = db.DateTimeProperty(auto_now=True)
journal_item = db.ListProperty(int)
В модели журнала я храню список идентификаторов JournalItem
в виде списка идентификаторов
class JournalItem(db.Model):
user = db.UserProperty()
name = db.StringProperty()
date_created = db.DateTimeProperty(auto_now_add=True)
last_modified = db.DateTimeProperty(auto_now=True)
content = db.StringProperty(multiline=True)
Так что, я думаю, вопрос на самом деле заключается в том, как мне моделировать данные с этой структурой (я упустил некоторые свойства, чтобы упростить ее) (показано в json).
"Journals": {
"Journal": {
"user": "GAE user object",
"name": "journal 1",
"JournalItems": {
"JournalItem": {
"name": "entry 1",
"content": "some example content"
},
"JournalItem": {
"name": "entry 2",
"content": "some example content"
},
"JournalItem": {
"name": "entry n",
"content": "some example content"
}
}
}
"Journal": {
"user": "GAE user object",
"name": "journal 2",
"JournalItems": {
"JournalItem": {
"name": "entry 1",
"content": "some example content"
},
"JournalItem": {
"name": "entry 2",
"content": "some example content"
},
"JournalItem": {
"name": "entry n",
"content": "some example content"
}
}
}
}
Надеюсь, это было не слишком скучно, чтобы быть раздражающим. Любая помощь по этому вопросу будет принята с благодарностью.