Fixed QuerySet.average issue that ignored 0
This commit is contained in:
parent
f1aec68f23
commit
17642c8a8c
@ -892,7 +892,7 @@ class QuerySet(object):
|
|||||||
var total = 0.0;
|
var total = 0.0;
|
||||||
var num = 0;
|
var num = 0;
|
||||||
db[collection].find(query).forEach(function(doc) {
|
db[collection].find(query).forEach(function(doc) {
|
||||||
if (doc[averageField]) {
|
if (doc[averageField] !== undefined) {
|
||||||
total += doc[averageField];
|
total += doc[averageField];
|
||||||
num += 1;
|
num += 1;
|
||||||
}
|
}
|
||||||
|
@ -960,11 +960,14 @@ class QuerySetTest(unittest.TestCase):
|
|||||||
def test_average(self):
|
def test_average(self):
|
||||||
"""Ensure that field can be averaged correctly.
|
"""Ensure that field can be averaged correctly.
|
||||||
"""
|
"""
|
||||||
|
self.Person(name='person', age=0).save()
|
||||||
|
self.assertEqual(int(self.Person.objects.average('age')), 0)
|
||||||
|
|
||||||
ages = [23, 54, 12, 94, 27]
|
ages = [23, 54, 12, 94, 27]
|
||||||
for i, age in enumerate(ages):
|
for i, age in enumerate(ages):
|
||||||
self.Person(name='test%s' % i, age=age).save()
|
self.Person(name='test%s' % i, age=age).save()
|
||||||
|
|
||||||
avg = float(sum(ages)) / len(ages)
|
avg = float(sum(ages)) / (len(ages) + 1) # take into account the 0
|
||||||
self.assertAlmostEqual(int(self.Person.objects.average('age')), avg)
|
self.assertAlmostEqual(int(self.Person.objects.average('age')), avg)
|
||||||
|
|
||||||
self.Person(name='ageless person').save()
|
self.Person(name='ageless person').save()
|
||||||
@ -1340,5 +1343,6 @@ class QTest(unittest.TestCase):
|
|||||||
self.assertEqual(Post.objects.filter(created_user=user).count(), 1)
|
self.assertEqual(Post.objects.filter(created_user=user).count(), 1)
|
||||||
self.assertEqual(Post.objects.filter(Q(created_user=user)).count(), 1)
|
self.assertEqual(Post.objects.filter(Q(created_user=user)).count(), 1)
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
unittest.main()
|
unittest.main()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user