私のアプリケーションでは、ndb.Model の単純なサブクラスである基本モデルを使用して、一般的なプロパティを保持しています。ただし、一部の機能については、ポリモデル機能を活用できると非常に便利です。Model と PolyModel の両方が多重継承をサポートしていると思われますが、私の質問は、以下を行う際の注意点はありますか?
from google.appengine.ext import ndb
from google.appengine.ext.ndb import polymodel
class InternalBase(ndb.Model):
# some fields, methods shared to many sub-models
class Widget(polymodel.PolyModel, InternalBase):
# widget-general
class TextWidget(Widget):
# widget-specific
class HTMLWidget(Widget):
# widget-specific
目標は、InternalBase のすべての基本的なプロパティとメソッドを Widget クラスで使用できるようにすることですが、単一のクエリ (PolyModel が追加するもの) を使用して Widget のすべてのサブクラスを検索できるようにすることも目的です。
また、そのようなスキームの潜在的な問題を明らかにする可能性のあるテストケースを考えていただけますか?