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 件のコメント:

voluntas さんのコメント...

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

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

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

VIVAHIRAJ さんのコメント...

voluntasさん。ありがとうございます!collection_nameを知りませんでした!