[GAE/P]必須カラムの登録について


最近、GAE for Pythonでアプリを作っているのですが、必須カラムの値がうまく登録できなかった問題が解決したので、メモとして残しておきたいと思います。

■A.py

1
2
class A(db.Model):
    owner = db.UserProperty(required=True,auto_current_user_add=True)

■B.py

1
2
class B(db.Model):
    a = db.ReferenceProperty(required=True,reference_class=A)

■main.py

1
2
3
4
5
6
7
a_key = [エンティティAのKeyを取得]
a = A.get(a_key)
# コンストラクタで指定しないと登録時にエラーになります。
b = B(a=a)
# 以下のようにフィールドを指定して代入してもエラーとなる。
b.a = a
b.put()

ずっと、後者のようにフィールドを指定して代入していたので、「なんで代入してるのにエラーになるんだ?」という風に思っていて、コンストラクタに指定するというのに気づくのがかなり遅くなってしまいました。

とりあえず、なんとか登録することもでき、前に進むことができるようになりました。今作っているアプリはjsごりごりのアプリなので、デバッグがいつもに比べ手間がかかります^^;しかも、Python自体もまだ勉強し始めてそんなに時間が経っていないのでどういう関数があるのかすら分からない状態で、常にググりながらのコーディングとなっています。

関連記事