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,但不好......
答案 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。