在Django模型领域中按总和分组

时间:2014-07-01 12:10:54

标签: django

class Model1(models.Model):

    model1_number = models.PositiveSmallIntegerField()
    model1_sum = models.IntegerField()

class Model2(models.Model):
    model2_name = CharField(max_length=200)
    model2_number = CharField(max_length=200)
    model2_super_sum

model2_number中,model1_number values(example, 1,2,5)将是多重列表。我想在model_super_sum中获得model1_sum的金额。

我尝试sql,但不好......

1 个答案:

答案 0 :(得分:0)

正如@Anentropic建议您在Model1上映射到Model2时应该有一个ForeignKey。它会让你的生活更轻松。

class Model1(models.Model):
    model_2 = models.ForeignKey(Model2, related_name="model_1_set")
    sum = models.IntegerField()


class Model2(models.Model):
    name = models.CharField()

然后要获得Model2的超级总和,您需要执行以下操作:

from django.db.models import Sum
Model2.objects.all().annotate(super_sum=Sum('model_1_set__sum'))

请注意,我在Model1上删除了您的数字小正整数字段,因为Django会自动为您提供自动递增的整数ID。