比较ndb中的键与KeyProperty

0 投票
1 回答
716 浏览
提问于 2025-04-17 15:17

我正在尝试做一个查询,比较一个关键字,但我没有得到任何结果。

我有一个教程(Tutorial)和一个章节(Chapter)模型。章节模型里有一个叫做关键属性(keyProperty)的东西,它的类型是教程(Tutorial)。这个属性的定义是这样的:tutKey = ndb.KeyProperty(kind='Tutorial')

tutID = self.request.cookies.get('tut_id', '')

tutIns = ndb.Key('Tutorial', int(tutID)).get()
chaps = Chapter.query(Chapter.tutKey == tutIns.key)

self.render('editTut.html', chaps=chaps, tutins=tutIns.key)

我发送tutIns.key只是为了测试这个实例是否正常工作,结果确实返回了一个键(Key),格式是Key('Tutorial', 1)。而且如果我只执行查询Chapter.query(),它会返回所有的章节,正如我预期的那样。

这是我在章节中存储tutkey的方式:

tutID = self.request.cookies.get('tut_id', '')
tutorial = ndb.Key('Tutorial', tutID)
.
.
.

chap = Chapter(tutKey=tutorial, title=title, content=content,
                           note=note, order=order)
chap.put()

在开发控制台中,我可以看到章节1和章节2中存储的tutkey是相同的,但这个键并不等于教程的键。我是在错误的方式创建章节吗?

1 个回答

3

在这里,你把ID转换成了一个整数:

tutIns = ndb.Key('Tutorial', int(tutID)).get()

但是在这里,你把它当作字符串来使用:

tutID = self.request.cookies.get('tut_id', '')
tutorial = ndb.Key('Tutorial', tutID)

这样得到的Key实例就不相等了。

撰写回答