2012-04-04 4 views
0

データストアから与えられたデータを出力する簡単なwebapp htmlページを作成しようとしています。しかし、私は継続的に、次のエラーを実行しています:GAEで「BadValueError:プロパティカテゴリが必要」

raise BadValueError('Property %s is required' % self.name) 
BadValueError: Property category is required 

私は事前に私のプロパティを初期化しなければならないためであると聞いているが、まだのように、これを行うための適切な方法を発見していません。

以下は、次のは、次のように私のHTMLページである

class SpPage(webapp.RequestHandler): 
    def printPage(self,path): 
     user = users.get_current_user() 
     template_values = getCommonValues(user) 

     if user: 
      template_values['questions'] = model.Question.all().fetch(100) 
      self.response.out.write(template.render(path, template_values)) 
     else: 
      path = os.path.join(os.path.dirname(__file__), 'html/pleaseLogin.html') 
      self.response.out.write(template.render(path, template_values)) 

別pages.pyに与えられる

model.py

class Question(db.Model): 
    category = db.StringProperty(required=True) 
    question = db.StringProperty(required=True, multiline=True) 
    creator = db.StringProperty(required=True, multiline=True) 
    answer = db.StringProperty(required=True, multiline=True) 
    mustHave = db.StringProperty(required=False, multiline=True) 
    group = db.StringProperty(required=False) 
に配置されている:

Questions<br/> 
{% for eachQ in questions %} 
    <p> 
    <a href='/doQuestionPage?id={{eachQ.key}}'>{{eachQ.question}}</a><br/> 
    by {{eachQ.creator}} 
</p> 
{% endfor %} 

データストアにデータを追加するクラス: 注:これはデータをポストするフォームに添付されていますこのクラスを使用します。すべてのコードがそこにあるわけではないので、「何か」などの変数が使用されていないと心配しないでください。それは今のところ働いているようです。

class AddQuestion(webapp.RequestHandler): 
    def doPost(self,something):   
    user = users.get_current_user() 
    template_values = getCommonValues(user) 

    c = self.request.get('cat') 
    q = self.request.get('question') 
    a = self.request.get('answer') 
    m = self.request.get('musthaves') 

    if user: 
     emailStr = user.email().lower() 
     if q and a and m: 
      newQuestion = model.Question(category = c, question = q, creator = emailStr, answer = a, mustHave = m) 
      newQuestion.put() 
      template_values['message'] = 'New question created!' 
+0

Sean、質問エンティティはどのように最初にデータベースに入るのですか? –

+0

フォームを持つ別のページから追加されます。このフォームは別のクラスにPOSTします。私はフォームが機能しているのでデータがデータストアに格納されていることを知っています。私はまだgetsなどでデータを取得できます。 c = self.request.get(ここでは、 'cat') q = self.request.get( 'question') a = self.request.get( '答え') m = self.request.get( 'musthaves') newQuestion = model.Question(template_values ['message'] = '新しい質問が作成されました!'template_values ['message'] = '新しい質問が作成されました! –

+0

はい、データストアからエンティティを取得しているときにこのエラーが表示されるのは絶対に意味がないため、エンティティをデータストアに格納するフローがコード内に存在することが強く疑われます。 –

答えて

1

がカテゴリプロパティ、またはその他の必要なプロパティを持っていないあなたの現在のデータストア内の一部の企業があるかもしれません、記入。これは、その前に他のエンティティを既に作成した後で、そのプロパティをモデルに追加するときに発生することがあります。または、以前は不要だったプロパティにrequired=Trueオプションを追加することもできます。

devデータで遊んでいる場合は、データストアを消去するか、すべてのQuestionエンティティを削除し、それが機能するかどうかを確認することをおすすめします。

それ以外の場合は、必要なすべてのフィールドに手動でデータを追加するか、required=Trueオプションを削除する必要があります。

関連する問題