我是Django学费管理软件的初学者。
我的问题如下:
我有两个模型,学生和家庭:
from django.db import models
--snip--
class Family(models.Model):
father = models.CharField(max_length=100)
mother = models.CharField(max_length=100)
total_fees = students.fees.aggregate(models.Sum('fees'))
def __str__(self):
return self.father+" " +self.mother
class Student(models.Model):
family = models.ForeignKey(Family, on_delete=models.CASCADE, related_name='students', default='')
name = models.CharField(max_length=100)
date_of_birth = models.DateField('Date Of Birth')
fees = models.IntegerField(default=0)
email= models.CharField(max_length=200)
def __str__(self):
return self.name
我试着把一个家庭所有学生的学费加起来,算出一个家庭的全部学费:total_fees = students.fees.aggregate(models.Sum('fees'))
我使用了here的解决方案。
但我在尝试迁移时遇到以下错误:
File "/home/my_username/mysite/students_app/models.py", line 34, in Family
total_fees = students.fees.aggregate(models.Sum('fees'))
AttributeError: 'ForeignKey' object has no attribute 'fees'
PS:这是我的第一个问题,请告诉我如何改进我的问题:)
第一步是将总和聚合函数从django.db.models导入模型文件:
然后,在族类中定义进行聚合的函数。注意aggregate()返回名称-值对的字典。因此,正如您之前设置的查询一样,它将返回如下内容:
{'fees__sum': 100000}
因此,您需要通过生成的键访问字典中的值,如:
总而言之:
这样,您就可以拥有一个家庭对象并获得总费用:
相关问题 更多 >
编程相关推荐