Используя Google App Engine в Python и ссылки, вы автоматически получаете обратную ссылку от ссылочного объекта к тому, с которым вы имеете дело.Это очень хорошо описано в ответе, найденном здесь .
То, что я хотел бы сделать, - это создать (более простое) отношение «один ко многим», где каждая группа имеет список тегов, и каждый тег принадлежит только одной группе.Я представляю себе что-то вроде следующего:
class Group(db.Model):
# All of my group-specific data here.
class Tag(db.Model):
text = db.StringProperty(required=True)
group = db.ReferenceProperty(Group, collection='tags')
Предполагая, что я все правильно понимаю ... В приведенном выше вы получите все Group
со свойством tags
:
# Get the list of Tag objects that belong to a Group object
mytags = mygroup.tags
У меня вопрос: есть ли «стандартный» способ включить эту информацию в объект Group
?Глядя на модели данных, вы не можете увидеть, глядя на объект Group
, что у него есть список тегов, которые к нему применяются.Я хотел бы иметь возможность определить Group,Tags
как что-то вроде
class Group(db.Model):
# This should automatically be the same as the "tags" property that is
# created for the Group model by the definition of the Tag model
tags = db.ListProperty(db.Key)
# All of my group-specific data here.
class Tag(db.Model):
text = db.StringProperty(required=True)
group = db.ReferenceProperty(Group, collection='tags', required=True)
# Other tag specific information here (such as url, etc)
Идея состоит в том, что я хочу видеть, когда я смотрю на модель группы, что у нее есть списокПомечать объекты как свойство.Для меня неестественно мне необходимо взглянуть на модель Tag, чтобы узнать эту информацию.
Примечание: Возможно, стоит отметить, что я планируюналичие Group
в качестве родителя (для группы сущностей) каждого из Tag
s.Каждый раз, когда я изменяю Group
, я буду обновлять его полностью, заменяя все его Tag
на новые, и я хочу получить правильный список их для данной "версии" Group
IЯ смотрю.
Варианты использования моих данных:
- Обновление групп - создание или обновление 6 групп.Если создать, то создайте теги для группы.При обновлении полностью замените теги для группы (удаляя старые) - это происходит каждые 5 минут или около того
- Чтение недавних групп - получение 6-20 (еще не решенных) самых последних измененныхгруппы, не нужно загружать их теги
- Читать одну группу - получить информацию для отдельной группы, включая ее теги (каждая из которых будет иметь от 10 до 20 тегов)