用于维护django模型的非规范化聚合的实用程序
django-denormalized的Python项目详细描述
django非规范化
用于维护Django模型的非规范化聚合的实用程序。
示例
fromdjango.dbimportmodelsfromdenormalizedimportDenormalizedTracker,DenormalizedForeignKeyclassGroup(models.Model):members_count=models.PositiveIntegerField(default=0)points_sum=models.PositiveIntegerField(default=0)classMember(models.Model):group=DenormalizedForeignKey(Group,models.CASCADE,trackers=[DenormalizedTracker(# name of field to store denormalized count of active members"members_count",# callback to determine whether object should be counted or notcallback=lambdaobj:obj.active,# QuerySet filter to count only suitable objectsquery=models.Q(active=True)),DenormalizedTracker(# multiple denormalized fields tracked for single foreign key"points_sum",# Sum/Min/Max is also supportedaggregate=models.Sum("points"))])active=models.BooleanField(default=True)points=models.IntegerField(default=0)