Exhibit哪个参考对象Gallery两者都存储在谷歌应用程序引擎的数据存储。对象

如何订购时,我避开遍历值(最终在Django模板)每个Exhibit对象的Gallery收集?

即。这不工作


class Gallery(db.Model):
  title = db.StringProperty()
  position = db.IntegerProperty()

class Exhibit(db.Model):
  gallery = db.ReferenceProperty(Gallery, collection_name='exhibits')
  title = db.StringProperty()
  position = db.IntegerProperty()

galleries = db.GqlQuery('SELECT * FROM Gallery ORDER BY position')
for gallery in galleries:
  gallery.exhibits.order('position')

# ... send galleries off the the Django template

当在模板呈现时,画廊正确排序,但表现出不

有帮助吗?

解决方案

而不是依赖于集合属性的应用程序引擎创建的,你需要构建自己的查询:

  

展品= Exhibit.all()。过滤器( “画廊=”,画廊).order( “位置”)

或者等价地,在GQL:

  

展品= db.GqlQuery( “SELECT * FROM图表WHERE画廊=:1个ORDER BY位置”,画廊)

如果您希望能够从模板中做到这一点,而不是传递在展品清单-的清单,你可以定义执行此查询库对象一个简单的方法,并从引用它模板(例如,{{gallery.exhibits_by_position}}将库对象,然后可以执行上述查询上执行exhibits_by_position())。

如果你担心这个速度的影响,不用担心:集合属性的App Engine的创建是这只是语法糖

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top