2008-07-27

Google App EngineのModelの制限

Google App EngineでModelを定義するときに、同じモデルに対するReferenceProperty
を二つ設定できない模様(同じモデルに限らないのかもしれないのですが・・・)。

具体的には、

class Users(db.Model):
name = db.StringProperty(required=True)

class Friends(db.Model):
owner = db.ReferenceProperty(Users)
friend = db.ReferenceProperty(Users)

っていうのは、エラーになってしまいました。
しょうがないので、以下のように片方をStringPropertyにしてkey値を文字列に変換して入れて対処してみました。

class Friends(db.Model):
owner = db.StringProperty()
friend = db.ReferenceProperty(Users)

2 件のコメント:

  1. 解決していたらすみません。

    collection_name を使えば大丈夫「なはず」です。

    class Friends(db.Model):
    owner = db.ReferenceProperty(Users, collection_name='owner_set')
    friend = db.ReferenceProperty(Users, collection_name='friend_set')

    返信削除
  2. voluntasさん。ありがとうございます!collection_nameを知りませんでした!

    返信削除