【发布时间】:2013-03-20 20:09:41
【问题描述】:
我在尝试使用 AppEngine 框架中的 ndb 查询对象时遇到了一些问题。我对 ndb 很陌生,我认为我误解了一些重要概念。
这是我得到的:
我的模型名为Teacher:
from webapp2_extras.appengine.auth.models import User
class Teacher(ndb.Model):
user = ndb.StructuredProperty(User)
ranking = ndb.FloatProperty(required=True)
如您所见,用户模型来自 webapp2 框架。然后我尝试查询与某个用户关联的老师。我是这样做的:
def _findTeacher(self, user):
t = Teacher.query(Teacher.user == user).fetch(1)
if t:
return t[0]
else:
return None
作为这个函数的参数进来的用户获取方式如下:
user_session = self.auth.get_user_by_session()
user = self.auth.store.user_model.get_by_auth_token(user_session['user_id'], user_session['token'])[0]
但是,我收到以下错误:
BadFilterError: invalid filter: Cannot query for non-empty repeated property auth_ids.
我真的很想知道我的错误在哪里,它也将是一个使用 ndb 和 webapp2 auth 系统的应用程序示例。
谢谢大家
【问题讨论】:
-
当你使用 DB 的时候这个工作有效吗?
-
好吧,让它们工作会很痛苦,因为
user模型是ndb模型,而Teachermodel 是db 模型。我不确定,但这两者之间的集成不会像人们希望的那样无缝。