1

親がいなければ意味のないモデルがあります。エンティティに親を持つように強制する方法はありますか? 必須プロパティと同様に、子エンティティが親なしでインスタンス化された場合に例外を発生させたいと思います。

class Parent(db.Model):
    eye_color = db.StringProperty(required=True)

class Child(db.Model):
    pass

例外を発生させません:

mom = Parent(eye_color='purple')
jimmy = Child(parent=mom)

例外を発生させます:

mom = Parent(eye_color='purple')
jimmy = Child()
4

2 に答える 2

2

私はこれを個人的に試したことはありませんが__init__、Childクラスをオーバーライドして、親がNoneでないことを確認できるはずです。そのようです:

class Child(db.Model):
  pass

  def __init__(self,
               parent=None,
               key_name=None,
               _app=None,
               _from_entity=False,
               **kwds):
    if not parent:
      raise ValueError('parent is required.')
    super(Did, self).__init__(parent=parent, key_name=key_name, app=_app,
                              _from_entity=_from_entity, **kwds)
于 2012-12-02T05:53:23.980 に答える
0

ndbを使用すると、pre putフックメソッドを使用して、そのインスタンスに親があるかどうかを確認し、親がない場合は例外を発生させることができます。古いdbモジュールを使用しているようですが、同じフックメソッドがないと思います。はるかに優れた改善されたndbデータストアAPIへの移行を検討する必要があります。自動キャッシュなど、他の多くのメリットが得られます。

NDB:https ://developers.google.com/appengine/docs/python/ndb/overview

NDBモデルフック:https ://developers.google.com/appengine/docs/python/ndb/entities#hooks

編集:dbAPIを使用してndbモデルフックに似た何かを実行できることを思い出しました。いつものように、ニック・ジョンソンからのこの投稿で説明されています。

于 2012-12-02T22:49:18.700 に答える