1

文字列を既存のエンティティに変換したい。以下のようにconvertToEntity () 関数を書くことは可能ですか?

class Personel(db.Model):
  name=db.StringProperty()


class IsEntityExists(webapp.RequestHandler):
  def get(self):
    entity="Personal"
    Entity=entity.convertToEntity()
    Entity.all()
4

2 に答える 2

1

質問は、既にインポートされている場合に、その名前を指定してモデルクラスを何らかの方法で検索することを求めているだけなのだろうか。次のように、これを簡単に行うことができます (ただし、既にインポートされている場合のみ!)。

cls = db.class_for_kind("Personel")
... cls.all() ...

NDB での同等物:

cls = ndb.Model._kind_map["Personel"]
... cls.query() ...

幸運を!

PS。いいえ、スペル修正は行いません。:-)

于 2012-07-27T21:35:13.840 に答える
0

モデル用のローダーを構築する場合のみ...例:

from app import model_loader

class IsEntityExists(webapp.RequestHandler):
  def get(self):
    Entity=model_loader("Personal")
    Entity.all()

model_loader関数は、定義されたモデルのフォルダー構造(pythonモジュール)を検索します。たとえば、フォルダー構造は次のとおりです。

models/
personal.py
other_model.py
user.py

したがって、model_loader( "Personal")はpersonal.pyをインポートし、そのモジュールから "Personal"クラスを抽出して、そのクラスを見つけてロードした場合に、そのクラスで必要なことを実行できるようにします。

もちろん、ローダーをコーディングする必要があります。

ただし、クラス(定義されたモデル)がコードと同じファイルにある場合は、locals()で「Personal」を検索できます。

def load_model(name):
    local = locals()
    try:
      return local[name]
    except KeyError:
      return None
于 2012-07-27T10:57:10.623 に答える