Я пытаюсь использовать модельный метод в агрегатном запросе 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
Метод
Methds , возвращает метрику отчетности, используемую внутренне, где живет приложение. Я хочу объединить метрику в общей сложности за месяц между сроком дата. Methdhdsv
Methdsv
Я не являюсь совокупностью
/ Annotate
Annotate
Master
Мастер. Мои попытки до сих пор не потомли результаты, которые я после.
В конечном итоге я запросил Бронирование
между указанным Даты, а затем зацикливаются по результатам и подсчитали блок отчетности в словаре, позвонив на метод GetHDSV
, каждая итерация. Конечно, полученный словарь не сортируется так, как я хотел бы.
Поэтому я сейчас поворачиваюсь, чтобы получить некоторую помощь.
Учитывая способ генерирования метрики Могу ли я вызвать метод модели во время агрегирования данных в запросе? Или я должен использовать словарь HDSVUnits
, создавая агрегат
? Или есть лучший способ?
Спасибо.