0

Expandoモデルに動的なエンティティの種類を割り当てることはできますか?今私は、クエリ(「ページ」、「投稿」などのような)種類を保持するために、「COL」StringPropertyを使用動的な種類のGAE NDB Expandoモデル

class Dynamic(ndb.Expando): 
    """ 
    Handles all "Post types", such as Pages, Posts, Users, Products, etc... 
    """ 
    col = ndb.StringProperty() 
    parent = ndb.IntegerProperty() 
    name = ndb.StringProperty() 
    slug = ndb.StringProperty() 

:たとえば、私は、ダイナミックなエンティティの多くの種類のためにこのモデルを使用したいです毎回 "col"のために。

ドキュメントを読んだ後、私はこの@classmethodつまずい:

class MyModel(ndb.Model): 
    @classmethod 
    def _get_kind(cls): 
     return 'AnotherKind' 

んが、私はこれを行うことができます意味ですか。

class Dynamic(ndb.Expando): 
    """ 
    Handles all "Post types", such as Pages, Posts, Users, Products, etc... 
    """ 
    col = ndb.StringProperty() 
    parent = ndb.IntegerProperty() 
    name = ndb.StringProperty() 
    slug = ndb.StringProperty() 

    @classmethod 
    def _get_kind(cls): 
     return 'AnotherKind' 

しかし、「AnotherKind」を動的に置き換えるにはどうすればよいですか? return colのようなことをすることはできますか?

ありがとうございます!

+0

私は(行間を読んで)あなたはPolyModelをよく見てください。 –

答えて

1

あなたがそれを行うことができるかどうかわかりませんが、危険な音で、GAEのアップデートによってコードが壊れる可能性があります。

サブクラスを使用する方がはるかに安全な選択肢のようです。このようなもの:

class Dynamic(ndb.Expando): 
    parent = ndb.IntegerProperty() 
    name = ndb.StringProperty() 
    slug = ndb.StringProperty() 

class Pages(Dynamic): 
    pass 

class Posts(Dynamic): 
    pass 

class Users(Dynamic): 
    pass 

また、PolyModelを試してみることもできます。

具体的なアドバイスを行うために、アプリケーションと詳細について知る必要があります。

関連する問題