【问题标题】:Google App Engine relationtable and paging?Google App Engine 可关联和分页?
【发布时间】:2012-03-28 07:39:00
【问题描述】:

我确实有以下数据存储模型:

class One(db.Model):
  OneDateAdded = db.DateTimeProperty(auto_now_add=True)
  OneTitle= db.StringProperty()
  OneLink= db.LinkProperty()

class Two(db.Model):
  TwoDateAdded = db.DateTimeProperty(auto_now_add=True)
  TwoTitle= db.StringProperty()
  TwoLink= db.LinkProperty()

class Three(db.Model):
  ThreeDateAdded = db.DateTimeProperty(auto_now_add=True)
  ThreeTitle= db.StringProperty()
  ThreeisSomething = db.BooleanProperty(default=False)
  ThreeLink= db.LinkProperty()

还有一个关系表:

class Relation(db.Model):
      RelationDateAdded = db.DateTimeProperty(auto_now_add=True)
      RelationOne = db.ReferenceProperty(One)
      RelationTwo = db.ReferenceProperty(Two)
      RelationThree = db.ReferenceProperty(Three)

当我尝试实现 PagedQuery 库时,我遇到了一个问题,即由于 GAE 限制,我无法使用某种联接。

我不想完成的是对我的关系表的查询RelationThree.ThreeisSomething = True

遍历一组结果似乎不是一个解决方案,因为分页不起作用(得到 10 个结果 2 为真 8 为假,导致页面只有 2 个结果..)

有没有办法做这样简单的事情:(这不起作用)

myPagedQuery = paging.PagedQuery(Release.all().filter('Three.ThreeisSomething  =', True), 10)

【问题讨论】:

  • 您不能在数据存储中执行此操作。您的选择基本上是去规范化或使用新的云 SQL 服务。
  • 我希望有另一个解决方案,但希望得到这个答案。谢谢!!

标签: python google-app-engine google-cloud-datastore


【解决方案1】:

您可以使用limitoffset 记录的here。不过要小心,使用它们可能会很昂贵 - 设置偏移量 100 和限制 10 实际上会加载 110 条记录并为您提供最后 10 条记录。

【讨论】:

    猜你喜欢
    • 2012-12-20
    • 1970-01-01
    • 2012-08-17
    • 2011-06-12
    • 1970-01-01
    • 2011-03-01
    • 2018-04-28
    • 2017-10-12
    • 2014-10-04
    相关资源
    最近更新 更多