sdk*_*900 9 django model aggregate
我试图在django聚合查询中使用模型方法.我不确定它是否可能,我可能会以错误的方式行事.
这是我想要查询的模型.
class ClassNumbers(models.Model):
"""
The class year level and number inline model for a booking
"""
booking = models.ForeignKey('Booking')
yearLevel = models.CharField(max_length=10, choices=YEAR_CHOICES, verbose_name='Year Level')
numberOfStudents = models.IntegerField(verbose_name='Number of Students')
class Booking(models.Model):
# A shorter version of the model
date = models.DateField()
institution = models.ForeignKey(Institution)
def getStudentTotal(self):
# Total class numbers
classes = ClassNumbers.objects.filter(booking=self.id)
classTotal = 0
if ( classes ):
for c in classes:
classTotal += c.numberOfStudents
return classTotal
def getHDSV(self):
HDSVunits = {
'Full-Day': 2.0,
'Half-Day AM': 1.0,
'Half-Day PM': 1.0,
'Three-Quarter Day': 1.5,
'1 Hour': 0.5,
'Custom': 1.0,
}
numStudents = self.getStudentTotal()
result = numStudents * HDSVunits[self.price.name]
return result
Run Code Online (Sandbox Code Playgroud)
该getHDSV方法返回应用程序所在内部使用的报告指标.我希望将指标汇总为日期之间的月份总计.
我不是aggregate/ annotate主人.到目前为止,我的尝试并未取得我所追求的结果.
最后,我Bookings在指定日期之间查询,然后循环结果,并通过getHDSV每次迭代调用方法将报告单位计入字典.当然,生成的字典没有按照我想要的方式排序.所以我现在转而寻求帮助.
鉴于生成度量标准的方式,我可以在查询中聚合数据时调用模型方法吗?或者我应该HDSVunits在创建时使用字典aggregate?或者,还有更好的方法?
谢谢.
| 归档时间: |
|
| 查看次数: |
1615 次 |
| 最近记录: |