“BadValueError:属性类别是必需的”在GAE上 [英] "BadValueError: Property category is required" on GAE

查看:105
本文介绍了“BadValueError:属性类别是必需的”在GAE上的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试制作一个简单的webapp html页面,用于打印从数据存储区中提供的数据。但是,我不断运行以下错误:

$ p $ raise BadValueError('property%s is required'%self.name)
BadValueError:属性类别是必需的

我听说这是因为我必须初始化我的属性之前还没有找到合适的方法来做到这一点。



以下内容位于model.py中

  class问题(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 = False,multiline = True)
group = db.StringProperty(required = False)

以下是在单独的pages.py上给出的:

pre codelass SpPage(webapp.RequestHandler)
def printPage(self,path):
user = users.get_current_user()
template_values = getCommonValues(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))



我的html页面如下:

 问题<峰; br /> 
{%对于问题中的每个%}%
< 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')

如果用户:
emailStr = user.email()。lower()
如果q和a和m:
newQuestion = model.Question(category = c,question = q,creator = emailStr,answer = a, mustHave = m)
newQuestion.put()
template_values ['message'] ='创建新问题!'


解决方案

当前数据存储中可能有一些实体没有填写category属性或其他必需的属性。在您之前已经创建了一些其他实体之后,将属性添加到模型时,有时会发生这种情况。或者可以将 required = True 选项添加到以前不需要的属性中。



如果您正在玩使用开发数据,我建议您清除数据存储区或删除所有问题实体,然后查看是否有效。



否则,您必须手动将数据添加到所有必填字段或移除 required = True 选项。


I am trying to make a simple webapp html page that prints out data given from a datastore. However, I am continually running the following error:

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

I have heard that this is because I must initialize my properties beforehand but as of yet, have not found an appropriate way to do this.

The following is placed in 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)

The following is given on a separate pages.py

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))

My html page is as follows:

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

The class to add data to datastore: Note: this is attached to a form which posts data using this class. Not all code is in there so don't worry if some variables such as "something" don't appear to be used - they are. It seems to be working thus far.

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!'

解决方案

There might be some entities in your current datastore that don't have the category property, or other required properties, filled out. This could sometimes happen when you add the property to your model after already creating some other entities before that. Or perhaps adding the required=True option to a property that previously wasn't required.

If you are playing with dev data, I would suggest that you either clear your datastore or delete all your Question entities, and see if that works.

Otherwise, you'd have to manually add data to all the required fields or remove the required=True option.

这篇关于“BadValueError:属性类别是必需的”在GAE上的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆