У меня есть две модели: Group
и Item
. Item
имеет список тегов и принадлежит Group
.
class Group(db.Model):
name = db.StringProperty()
class Item(db.Model):
title = db.StringProperty()
tags = db.StringListProperty()
group = db.ReferenceProperty(Group)
Пока что типичными действиями являются добавление тега к Item
, удаление тега из Item
и отображение всех Item
s, соответствующих данному Group
и тегу.
Какой хороший способ получить список всех уникальных тегов, используемых в Group
?
В идеале я хотел бы иметь свойство в Group
, которое отражает используемые теги:
class Group(db.Model):
name = db.StringProperty()
aggregated_tags = db.StringListProperty()
Было бы еще лучше, если бы в это число входило Item
с этим тегом.
Постоянная согласованность не является обязательной, то есть хорошо, если агрегированный список тегов не соответствует фактическому списку используемых тегов, если они в конечном итоге становятся согласованными.
Item
и Group
не относятся к одной и той же группе сущностей, поэтому у меня не может быть транзакции, которая обновляет Item
и Group
одновременно.