Использование способов модели в агрегатах

Я пытаюсь использовать модельный метод в агрегатном запросе 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

Метод Methdhdsv Methdsv Methds , возвращает метрику отчетности, используемую внутренне, где живет приложение. Я хочу объединить метрику в общей сложности за месяц между сроком дата.

Я не являюсь совокупностью / Annotate Annotate Master Мастер. Мои попытки до сих пор не потомли результаты, которые я после.

В конечном итоге я запросил Бронирование между указанным Даты, а затем зацикливаются по результатам и подсчитали блок отчетности в словаре, позвонив на метод GetHDSV , каждая итерация. Конечно, полученный словарь не сортируется так, как я хотел бы. Поэтому я сейчас поворачиваюсь, чтобы получить некоторую помощь.

Учитывая способ генерирования метрики Могу ли я вызвать метод модели во время агрегирования данных в запросе? Или я должен использовать словарь HDSVUnits , создавая агрегат ? Или есть лучший способ?

Спасибо.

9
задан sdk900 11 September 2011 в 10:47
поделиться