Ejemplo n.º 1
0
 def test_subset_aggregation(self):
     todays_ratings = Rating.objects.filter(created__gte=datetime.date.today())
     aggregated = generic_aggregate(Food.objects.all(), Rating.content_object, models.Sum('rating'), todays_ratings)
     self.assertEqual(aggregated, 15)
     
     aggregated = generic_aggregate(Food.objects.all(), Rating.content_object, models.Count('rating'), todays_ratings)
     self.assertEqual(aggregated, 4)
Ejemplo n.º 2
0
 def test_charfield_pks(self):
     a1 = CharFieldGFK.objects.create(name='a1', content_object=self.apple)
     a2 = CharFieldGFK.objects.create(name='a2', content_object=self.apple)
     o1 = CharFieldGFK.objects.create(name='o1', content_object=self.orange)
     
     annotated_qs = generic_annotate(Food.objects.all(), CharFieldGFK.content_object, models.Count('name'))
     self.assertEqual(annotated_qs.count(), 2)
     
     food_a, food_b = annotated_qs
     
     self.assertEqual(food_b.score, 1)
     self.assertEqual(food_b.name, 'orange')
     
     self.assertEqual(food_a.score, 2)
     self.assertEqual(food_a.name, 'apple')
 
     aggregated = generic_aggregate(Food.objects.all(), CharFieldGFK.content_object, models.Count('name'))
     self.assertEqual(aggregated, 3)
Ejemplo n.º 3
0
 def test_aggregation(self):
     # number of ratings on any food
     aggregated = generic_aggregate(Food.objects.all(), Rating.content_object, models.Count('rating'))
     self.assertEqual(aggregated, 7)
     
     # total of ratings out there for all foods
     aggregated = generic_aggregate(Food.objects.all(), Rating.content_object, models.Sum('rating'))
     self.assertEqual(aggregated, 27)
     
     # (showing the use of filters and inner query)
     
     aggregated = generic_aggregate(Food.objects.filter(name='apple'), Rating.content_object, models.Count('rating'))
     self.assertEqual(aggregated, 4)
     
     aggregated = generic_aggregate(Food.objects.filter(name='orange'), Rating.content_object, models.Count('rating'))
     self.assertEqual(aggregated, 3)
     
     # avg for apple
     aggregated = generic_aggregate(Food.objects.filter(name='apple'), Rating.content_object, models.Avg('rating'))
     self.assertEqual(aggregated, 3)
     
     # avg for orange
     aggregated = generic_aggregate(Food.objects.filter(name='orange'), Rating.content_object, models.Avg('rating'))
     self.assertEqual(aggregated, 5)