App Engine / Python BadValueError:成员实例必须具有完整的密钥

时间:2012-06-01 01:08:59

标签: python google-app-engine

这是我的代码。我通过了一些部分。

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 个答案:

答案 0 :(得分:1)

我想你想把你的帖子()更改为这样的(未经测试):

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

您不想创建新的成员实体,而是想要检索已经创建的成员实体。