对于我的应用程序,我们让用户对问题进行投票,并使用单独的数据存储来进行投票和问题。我希望在用户投票(或更改其原始投票)时更新上下投票总数,我试图通过在Vote.Method
. 为此,我进行了以下交易:
@ndb.transactional
def GetToChange(vote):
key = ndb.Key('Issue', vote.IID)
issue = key.get()
return issue
然后,在@Vote.Method
我调用事务函数中:
@Vote.method(request_fields=('UID', 'IID', 'Vote'), name='vote.add', path ='addvote')
def AddVote(self, vote):
vote.put()
i = GetToChange(vote)
if newvote.Vote == True:
i.UpTotal += 1
if newvote.Vote == False:
i.DownTotal += 1
i.put()
return vote
但是,这总是给我一个 503 错误,并且在日志中我发现“NoneType 我没有属性 UpTotal”,这表明没有检索到实体。我究竟做错了什么?
编辑:更多详细信息 这@Vote.method
需要用户 ID (UID)、问题 ID(问题数据存储中问题的 ID)和请求中的布尔值“投票”。投票存储在 vote.put() 中。然后,我使用请求中的 IID 调用我的事务方法来检索问题。我在代码中添加了更多内容,以显示我要解决的问题。