2012-04-16 6 views
2

ヒントをありがとう。おそらく私はそれを少し良く説明するためにこれを編集することができます...Google App EngineでDjangoフォームを使用して送信された情報を編集する方法

Google App Engine用のアプリケーションを作成しています.GQLクエリを実行して、既に提出された各タイプのすべての評価を取得したいと思います。ユーザーが個々の評価を編集して変更を送信するためのリンクをクリックできるようにしたい。これにより、ユーザーは、彼らがに向けられているリンクをクリックすると...、...

class GeneralFormApprove(webapp.RequestHandler): 
    def get(self): 
     # get the correct evaluation to approve 
     key = self.request.get('key') 
     item = GeneralAssessmentReport.get(key) 

     #write out the form with key in the form action! 
     self.response.out.write('<form method="POST" action="/generalFormApprove?key=%s">' % key) 
     self.response.out.write(GeneralAssessmentReportForm(instance=item)) 

    def post(self): 
     # get the key once more 
     key = self.request.get('key') 

     data = GeneralAssessmentReportForm(data=self.request.POST,instance=GeneralAssessmentReport.get(key)) 
     if data.is_valid(): 
     # save the edited evaluation 
     entity = data.save(commit=False) 
     entity.put() 

ので

class EvaluationApproval(webapp.RequestHandler): 
    def get(self): 
     #search for unapproved general evaluations 
     query = db.GqlQuery("SELECT * FROM GeneralAssessmentReport WHERE Approved = False") 

     if query.count() != 0: 
     for item in query: 
      #create a link to edit that item 
      self.response.out.write('<a href="generalFromApprove?key=%s">%s</a>' % (item.key(), item.Name)) 


    #do this for each type of evaluation... 

    query = db.GqlQuery("SELECT * FROM HeadNeck WHERE Approved = False") 
    if query.count() != 0: 
     for item in query: 
      self.response.out.write('<a href="headNeckApprove?key=%s">%s</a>' % (item.key(), item.Name)) 

    query = db.GqlQuery("SELECT * FROM lowerExtremity WHERE Approved = False") 
    if query.count() != 0: 
     for item in query: 
      self.response.out.write('<a href="lowerApprove?key=%s">%s</a>' % (item.key(), item.Name)) 

私はそれを行うことを見つけた最良の方法ですし、その後WhateverFormApproveを持っています各タイプの評価のためのクラス。これは理にかなっており、これを達成するための他のアイデアはありますか?

+0

私はあなたの質問を理解していないが、グローバル変数の状態を保存することは悪い考えです。これは、後続の要求をまったく別のプロセスで処理できるためです。 この質問でより良い結果を得るには、投稿するコードから重要ではない詳細を削除する必要があります。人々は一般的に、アプリ全体を読む必要がある質問に答えることを望んでいません。直接的で具体的であるようにしてください。 – allyourcode

答えて

0

既存のエンティティを編集する場合は、エンティティのIDを含むURLパターンを使用することをお勧めします。投稿時には、IDを使用してエンティティを読み込み、フォームのインスタンス引数に使用することができます。

URLパターンのようなものです:

r'^evaluationapproval/(?P<item_id>[\d]+)/$' 


def post(self,item_id=None): 
    item = None 
    if item_id: 
     item = db.get(db.Key.from_path('MyModelKind',int(item_id))) 
     #... 
関連する問題