有没有更好的方法来建立这种关系?

时间:2012-05-12 15:24:21

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

我有这些模特:

class Assignment(db.Model):
    title = db.StringPeoperty(required=True)
    ...other stuff...

class TeamScore(db.Model):
    assignment = db.ReferenceProperty(Assignment, 
                                      collection_name="teamScores",
                                      required=True)
    teamID = db.IntegerProperty(required = True)
    score = db.IntegerProperty(required = True)
    ...other stuff...

这是peoblem。在主页中,我想显示每个作业的前三名(基于得分)团队合作。所以,我把它传递给我的模板:

assignments = Assignment.all()

在模板中:

{% for assignment in assignments%}
    **<!--How to implement showing the top three-->**
    {% for score in assignment.teamScores%}
         {{score.teamID}}
         {{score.score}}
         ...............
    {% endfor%}
{%endfor%}

使用此数据存储模型。我需要在模板中排序,这是不可能的。所以,我认为它可能有一个更好的模型来处理这个问题。但我无法弄明白。我想到了这个想法,添加一个ListProperty来存储前三名。每当新的TeamScore生成时,我会将其与列表中的分数进行比较,以保持前三名的新鲜。但我认为这种方式并非强度。

你能给我一些建议吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

这不是一个数据建模问题,它是一个模板问题。您需要获取分配并执行查询以获取代码中的分数列表,并将结果传递到模板中,而不是仅仅传递分配模型并在模板中完成其余工作。