Vous devez retourner votre pensée lorsque vous travaillez avec une solution évolutive de la banque de données comme GAE à faire vos calculs avant. Dans ce cas, cela signifie que vous devez garder les compteurs pour chaque baz
et d'un incrément à chaque fois que vous ajoutez un nouveau bar
, au lieu de compter au moment de l'affichage.
class CategoryCounter(db.Model):
category = db.StringProperty()
count = db.IntegerProperty(default=0)
ensuite, lors de la création d'une Barre d'objet, d'incrémenter le compteur
def createNewBar(category_name):
bar = Bar(...,baz=category_name)
counter = CategoryCounter.filter('category =',category_name).get()
if not counter:
counter = CategoryCounter(category=category_name)
else:
counter.count += 1
bar.put()
counter.put()
db.run_in_transaction(createNewBar,'asdf')
vous avez maintenant un moyen facile d'obtenir le comte pour une catégorie spécifique
CategoryCounter.filter('category =',category_name).get().count