0

これが私のコードです。いくつかの部分を通過しました。

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クラスに保存するコードを配置すると、機能します。

4

1 に答える 1

1

post()を次のようなものに変更したいと思います(テストされていません):

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

新しいMembersエンティティを作成するのではなく、すでに作成したエンティティを取得する必要があります。

于 2012-06-01T01:18:59.507 に答える