Python 德扬戈。在数据库中进行复杂的计算
以下是我的模型文件的一部分:Python 德扬戈。在数据库中进行复杂的计算,python,django,django-models,Python,Django,Django Models,以下是我的模型文件的一部分: class Metric(models.Model): Team = models.ForeignKey(Team) metric_name = models.CharField(max_length = 40) def __unicode__(self): return self.metric_name class Members(models.Model): Metric = models.Foreig
class Metric(models.Model):
Team = models.ForeignKey(Team)
metric_name = models.CharField(max_length = 40)
def __unicode__(self):
return self.metric_name
class Members(models.Model):
Metric = models.ForeignKey(Metric, through="Calculate")
member_name = models.CharField(max_length = 40, null=True, blank=True)
week_one = models.IntegerField(null=True, blank=True)
week_two = models.IntegerField(null=True, blank=True)
week_three = models.IntegerField(null=True, blank=True)
week_four = models.IntegerField(null=True, blank=True)
total = models.IntegerField(null=True, blank=True)
def __unicode__(self):
return self.member_ID
def save(self, *args, **kwargs):
self.total = int(self.week_one)+int(self.week_two)+int(self.week_three)+int(self.week_four)
super(Members, self).save(*args, **kwargs) # Call the "real" save() method.
现在我想做的是。我想计算每个度量的成员数,一个度量中所有成员的总数,以及一个度量中所有成员中最高的总数
我想不出在Django做这件事的方法。
我想进行这些计算并将其存储在数据库中。
谁能帮我解决这个问题。
谢谢如果您希望“记忆”这些结果,您至少可以遵循两条路径:
class Metric(models.Model):
Team = models.ForeignKey(Team)
metric_name = models.CharField(max_length = 40)
members_count = models.IntegerField()
members_max = models.IntegerField()
members_total = models.IntegerField()
def __unicode__(self):
return self.metric_name
# signal handling
from django.db.models import signals
from django.dispatch import dispatcher
def members_post_save(sender, instance, signal, *args, **kwargs):
# Update the count, max, total fields
met = sender.Metric # sender is an instance of Members
metric.members_count = Members.objects.filter(Metric=met).count()
# more code here to do the average etc;
dispatcher.connect(members_post_save, signal=signals.post_save, sender=Members)
>> members_count = me.members_set.count()
>> # aggregation queries for the total and max
如果不经常使用这些聚合,路径#2可能是一个可行且更易于维护的选项