次のモデルがあります。さまざまなテキストがさまざまなテキストのコレクションにタグ付けされており、各テキストには複数のバージョンを含めることができますが、「アクティブな」バージョンは 1 つだけです。
class Collection(db.Model):
name = db.StringProperty()
...
class Text(db.Model):
title = db.StringProperty(default="Untitled")
...
class Version(db.Model):
text = db.ReferenceProperty(Text, collection_name="versions")
content = db.TextProperty()
active = db.BooleanProperty(default=True)
...
class Tag(db.Model):
collection = db.ReferenceProperty(Collection, collection_name="c_tags")
text = db.ReferenceProperty(Text, collection_name="t_tags")
ここで、すべての「アクティブな」テキストを 1 つのコレクションに表示したいと思います。
class ViewCollection(webapp.RequestHandler):
def(get):
collection = Collection.get(self.request.get("key"))
# grabs the collection to display
tags = collection.t_tags
# grabs all the tags linking a text and a collection
texts = [t.text for t in tags]
これにより、すべてのテキストのリストが得られるので、すべてのテキスト タイトルを簡単に印刷できます ( t.title for t in texts
) が、各テキストの対応する「アクティブな」バージョンだけを取得できる賢い方法はありますか?
それとも、異なるモデル クラスにまたがるこのタイプのフィルタリングは不可能ですか?