0

在应用引擎中,我有一个这样的模型:

class Matchday(ndb.Model):
    num = ndb.IntegerProperty()
    name = ndb.StringProperty()

class Match(ndb.Model):
    matchday = ndb.KeyProperty(kind='Matchday')
    home = ndb.KeyProperty(kind='Team')
    away = ndb.KeyProperty(kind='Team')
    date = ndb.DateTimeProperty()

我像这样检索 Matchdays 和 Match 的所有项目:

matchdays = Matchday.query().order(Matchday.num).fetch()
matches = Match.query().order(Match.date).fetch()

并将它们传递给模板(使用 jinja2)。在模板上,我想列出所有比赛日并列出这些比赛日内的相应匹配项,嵌套列表如下

% for matchday in matchdays %}
    {% for match in matchday.matches %}
        {{ <<do somethin with the match here>> }} 
    {% endfor %}
{% endfor %}

这显然行不通。在嵌套的 for 循环中,我怎样才能只检索属于特定比赛日的匹配项?这可以用我实现的 KeyProperty 来完成,还是我必须改变我的模型?

4

2 回答 2

1

KeyProperty 可与其他同类键相媲美

matches = Match.query(Match.matchday == matchday.key).fetch()

编辑:

将此添加到 Matchday 模型中,您的代码将正常工作

@property
matches = Match.query(Match.matchday == self.key).fetch()
于 2013-08-18T18:56:42.397 回答
0

每次您的模板调用时,这将执行一个查询{% for match in matchday.matches %}

class Matchday(ndb.Model):
    num = ndb.IntegerProperty()
    name = ndb.StringProperty()

    def matches(self):
        return Match.query(Match.matchday == self.key).order(Match.date)
于 2013-08-27T22:33:49.510 回答