matsuyuta's Room

データの活用を考える

       
  • 2009年 10月 26日 · カテゴリー: GAE DAYS; Tagged as: , ,
    このエントリーを含むはてなブックマークはてなブックマーク - DAYS 10 俺はなんてアフォーム(FORM)なんだ! このエントリをつぶやくこのWebページのtweets Bookmark this on Delicious この記事をクリップ!Livedoorクリップ - DAYS 10 俺はなんてアフォーム(FORM)なんだ! BuzzurlにブックマークBuzzurlにブックマーク Share on Tumblr FC2ブックマークへ追加 Yahoo!ブックマークに登録 Googleブックマークに追加

    データの追加、編集処理、HTMLでいうFormの画面で、いくつか分かったことがあるので以下に記す。
    前回の「○ 賛否両論 ×(ベータ版)」では、
    唯一のデータ編集画面「ユーザー情報の編集」で、
    編集のHTMLのFORM画面に、更新前のデータを表示させることができなかった。
    表示させても、submitするとデータが追加されてしまい更新処理ができてなかった。
    泣く泣く、Djangoを使わず処理した。
    DjangoがGAEバージョンなので、あきらめていた。
    だが、今回、試行錯誤した結果、Django使って、更新処理を行う方法が分かった。
    本来、分かって当たり前なのかもしれないが、
    やっと・・・
    やっとわかった!
    こんなかんじ↓↓↓

    # モデルクラス
    class UserData(db.Model):
    user = db.UserProperty(required=True,auto_current_user=True)
    name = db.StringProperty(required=True,verbose_name='※名前')
    presentation = db.TextProperty(verbose_name='自己紹介')
    del_flg = db.IntegerProperty(default=0,verbose_name='削除フラグ')
    add_date = db.DateTimeProperty(auto_now_add=True,verbose_name='作成日時')
    update_date = db.DateTimeProperty(auto_now=True,verbose_name='更新日時')
    def __unicode__(self):
    return self.name
    # DjangoFormを使うためのフォームクラス
    class UsrForm(djangoforms.ModelForm):
    class Meta:
    model = UserData
    exclude = ['user','del_flg']
    # ハンドラー
    class UsrEditHandler(webapp.RequestHandler):
    ~~~(省略)~~~
    def post(self):
    user = users.get_current_user()
    if user:
    q = db.GqlQuery("SELECT * FROM UserData WHERE del_flg = 0 AND user = :1", user)
    q = q.get()
    <span style="color: #ff0000;">ここ!</span>
    form = UsrForm(<span style="color: #ff0000;">instance=q</span>,data=self.request.POST)
    if form.is_valid():
    data = form.save()
    data.put()
    self.redirect('/user')
    ~~~(省略)~~~
    

    そのほかには、
    データ更新画面で入力ミスをした時のパラメータ受け渡しを完全に忘れていた。
    たとえば、
    「 http://ctchandrls.appspot.com/—-/—?id=XXXXX 」
    のように、GETで「id」パラメータを渡している時は、
    入力ミスをして、更新画面に戻った時にも、「id」パラメータを渡しておかないと
    エラーになってしまう。
    テストしたときに気づけばいいのだが、
    入力ミスのテストは、少ししかやってないし、
    やる気もあまりなく、公開直前に気付いた。
    以上。
    私がつくったアプリ↓
    協調型意思決定支援システム「○ 賛否両論 ×(ベータ版)」

    http://sanpiryoron.appspot.com/

    協調型プロジェクトタスク管理ツール「キャッチ&リリース(ベータ版)」

    http://ctchandrls.appspot.com/

    コメントは受け付けていません。
 
Get Adobe Flash playerPlugin by wpburn.com wordpress themes