查询重复的ndb.KeyProperty不工作



我的查询有什么问题?

以下是我的模型:

class Positions(ndb.Model):
  title = ndb.StringProperty(indexed=True)
  summary = ndb.TextProperty()
  duties = ndb.TextProperty()
  dateCreated = ndb.DateTimeProperty(auto_now_add=True)
  dateUpdated = ndb.DateTimeProperty(auto_now=True)
class Applicants(ndb.Model):
  name = ndb.StringProperty(indexed=True)
  position = ndb.KeyProperty(kind=Positions,repeated=True)
  file = ndb.BlobKeyProperty()
  dateCreated = ndb.DateTimeProperty(auto_now_add=True)
  dateUpdated = ndb.DateTimeProperty(auto_now=True)

我的查询:

class AdminPositionInfoHandler(BaseHandler):
  def get(self,positionKeyId):
    user = users.get_current_user()
    if users.is_current_user_admin():
      positionKey = ndb.Key('Positions',int(positionKeyId))
      position = positionKey.get()
      applicants = Applicants.query(position=position.key).fetch() # the query
      values = {
        'position': position,
        'applicants': applicants,
      }
      self.render_html('admin-position-info.html',values)
    else:
      self.redirect(users.create_login_url(self.request.uri))

使用查询

似乎是错误的
applicants = Applicants.query(position=position.key).fetch()
File "C:xampphtdocsangelstouchmain.py", line 212, in get
applicants = Applicants.query(position=position.key).fetch()
... 
TypeError: __init__() got an unexpected keyword argument 'position'

我也尝试使用positionKey代替position.key:

applicants = Applicants.query(position=positionKey).fetch()

我从GAE网站的"祖先查询"部分得到这个:

https://developers.google.com/appengine/docs/python/ndb/queries

您不需要像这样传递参数到查询- ndb使用覆盖的相等/不相等操作符,因此您可以更"自然"地表达查询,使用'==','<', '>'等,因此:

applicants = Applicants.query(Applications.position==position.key).fetch()

关于按属性值过滤的部分给出了更多的例子。

(祖先是查询的特殊情况-它不是模型属性)

最新更新