App Engine,Python:更新数据存储记录的问题

时间:2010-03-07 13:44:03

标签: python google-app-engine google-cloud-datastore

我需要更新数据存储区中的记录,但不是更新记录,我总是会得到一条新记录。

我的模特:

class PageModel(db.Model):

    title = db.StringProperty()
    content = db.TextProperty()
    reference = db.SelfReferenceProperty()

    user = db.UserProperty(auto_current_user = True)    
    created = db.DateTimeProperty(auto_now_add = True)
    modified = db.DateTimeProperty(auto_now = True)

    type = db.StringProperty()
    template = db.StringProperty()
    position = db.IntegerProperty()
    hidden = db.BooleanProperty()
    historical = db.BooleanProperty()

我的经纪人:

class EditHandler(webapp.RequestHandler):

   def post(self):
        if self.request.path[6:] == '':
            page_id = 8
        else:
            page_id = int(self.request.path[6:]) # path: /edit/35

        #id = self.request.get('id')
        CP = PageModel.get_by_id(int(page_id))
        key = CP.key()

        title = self.request.get('title')
        content = self.request.get('content')
        type = self.request.get('type')
        hidden = self.request.get('hidden')
        #position = self.request.get('type')

        reference = PageModel.get_by_id(int(self.request.get('reference')))

        template = self.request.get('template')
        if ".htm" not in template:
            template = "index.htm"


        #if title == '' or content == '':
          #doRender(self,'create_page.htm',{'error' : 'Please fill in all fields'} )
          #return

        #edited_page = PageModel(key=CP.key, title=title, content=content, type=type, reference=reference, template=template)
        edited_page = PageModel()

        edited_page.key = CP.key()
        edited_page.title = title
        edited_page.content = content
        edited_page.type = type
        edited_page.reference = reference
        edited_page.template = template

        edited_page.put()

edit_page.key = CP.key()应该有什么问题,或者是什么?!

1 个答案:

答案 0 :(得分:3)

为什么每次都创建一个新的PageModel?而是编辑你通过id得到的那个,即CP? e.g。

edited_page = CP     
edited_page.title = title
edited_page.content = content
edited_page.type = type
edited_page.reference = reference
edited_page.template = template

edited_page.put()