2010-03-07 3 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_page.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() 
관련 문제