2012-06-01 35 views
0

這是我的代碼。我通過了一些部分。App Engine/Python BadValueError:成員實例必須具有完整的密鑰

class Members(db.Model): 
    author = db.UserProperty() 
    username = db.StringProperty() 

class Events(db.Model): 
    author = db.ReferenceProperty(Members) 

class MainPage(webapp.RequestHandler): 
    def get(self): 
     user = users.get_current_user() 
     if user: 
      member = Members() 
      member.author = user 
      member.username = '' 
      member.put() 

class AddEvent(webapp.RequestHandler): 
    def post(self): 
     event = Events() 
     event.author = Members(author=users.get_current_user()) 
     event.put() 
     self.redirect('/add') 
    def get(self): 
     path = os.path.join(os.path.dirname(__file__), 'templates', 'add_event.html') 
     self.response.out.write(template.render(path, None)) 

當添加一個新的事件,我得到這個錯誤BadValueError:各位實例必須有一個完整的鑰匙纔可以被存儲爲參考。我做了一些搜索,當我們不保存實體實例(put())時發生這個錯誤。所以我添加了將用戶保存到數據存儲的代碼,但我得到了同樣的錯誤。當我把代碼保存在AddEvent類中的用戶時,它可以工作。

回答

1

我想你想你的帖子()更改爲這樣的事情(未測試):

def post(self): 
    member = Members.all().filter("author =", users.get_current_user()).get() 
    event = Events() 
    event.author = member 
    event.put() 
    self.redirect('/add') 

你不想創建一個新的成員單位,要檢索一個你」已經創建。

+0

這幾乎是正確的。我們必須添加.get():member = Members.all()。filter(「author =」,users.get_current_user())。get() – tsil

+0

@IsmaelToé,謝謝,我修復了我的答案。 –

相關問題