put()没有“放”我的变化!

时间:2011-07-17 14:00:09

标签: python google-app-engine

我正在修改app引擎,我编写了一个编辑表单来编辑我的存储对象,假设他们是模型Foo。

我有这个代码全部执行但不产生任何异常,但数据存储中的项目保持不变:

class EditFooItemHandler(BaseHandler):
    page = "edit_fooitem"
    def post(self, foo_id=None):#POST
        if not foo_id is None:
            foo_id = int(foo_id)
            new_barid = int(self.request.POST['barid'])
            item = FooItem.get_by_id(int(foo_id))
            item.barid = new_barid
            logging.info( 'Saving FooItem with id=' + str(foo_id) + 'and barid=' + str(new_barid))
            item.put()

        self.prepare()
        self.values['item'] = item
        self.finish()

    def get(self, foo_id):#GET
        self.prepare()
        logging.info( 'getreq')
        logging.info( foo_id)
        item = FooItem.get_by_id(int(foo_id))
        self.values['item'] = item
        self.finish()

为什么item.put()不会改变我的数据存储的任何想法?谢谢你的帮助!

1 个答案:

答案 0 :(得分:0)

barid 

未定义为属性,而是定义为模型中的方法。为了使上述代码有效,我可以检索Bar.get_by_id(barid),然后执行

new_bar = Bar.get_by_id(barid)
foo.bar = new_bar