2010-03-07 71 views
2

我需要更新數據存儲中的記錄,但不是更新後的記錄,而是始終記錄一條新記錄。App Engine,Python:問題更新數據存儲記錄

我的模型:

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

應該有什麼問題edited_pa​​ge.key = CP.key(),還是什麼?

回答

3

爲什麼每次都創建一個新的PageModel?而是編輯一個你得到的ID即CP?例如

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() 
相關問題