Fixed #26390 -- Disabled grouping by Random().
Thanks to Tzu-ping Chung for the tests.
This commit is contained in:
parent
257f8495d6
commit
509d9da26f
1
AUTHORS
1
AUTHORS
|
@ -293,6 +293,7 @@ answer newbie questions, and generally made Django that much better:
|
||||||
Erwin Junge <erwin@junge.nl>
|
Erwin Junge <erwin@junge.nl>
|
||||||
Esdras Beleza <linux@esdrasbeleza.com>
|
Esdras Beleza <linux@esdrasbeleza.com>
|
||||||
Espen Grindhaug <http://grindhaug.org/>
|
Espen Grindhaug <http://grindhaug.org/>
|
||||||
|
Étienne Beaulé <beauleetienne0@gmail.com>
|
||||||
Eugene Lazutkin <http://lazutkin.com/blog/>
|
Eugene Lazutkin <http://lazutkin.com/blog/>
|
||||||
Evan Grim <https://github.com/egrim>
|
Evan Grim <https://github.com/egrim>
|
||||||
Fabrice Aneche <akh@nobugware.com>
|
Fabrice Aneche <akh@nobugware.com>
|
||||||
|
|
|
@ -154,6 +154,9 @@ class Random(NumericOutputFieldMixin, Func):
|
||||||
def as_sqlite(self, compiler, connection, **extra_context):
|
def as_sqlite(self, compiler, connection, **extra_context):
|
||||||
return super().as_sql(compiler, connection, function='RAND', **extra_context)
|
return super().as_sql(compiler, connection, function='RAND', **extra_context)
|
||||||
|
|
||||||
|
def get_group_by_cols(self, alias=None):
|
||||||
|
return []
|
||||||
|
|
||||||
|
|
||||||
class Round(Transform):
|
class Round(Transform):
|
||||||
function = 'ROUND'
|
function = 'ROUND'
|
||||||
|
|
|
@ -1315,3 +1315,18 @@ class AggregateTestCase(TestCase):
|
||||||
# with self.assertNumQueries(1) as ctx:
|
# with self.assertNumQueries(1) as ctx:
|
||||||
# self.assertSequenceEqual(books_qs, [book])
|
# self.assertSequenceEqual(books_qs, [book])
|
||||||
# self.assertEqual(ctx[0]['sql'].count('SELECT'), 2)
|
# self.assertEqual(ctx[0]['sql'].count('SELECT'), 2)
|
||||||
|
|
||||||
|
def test_aggregation_random_ordering(self):
|
||||||
|
"""Random() is not included in the GROUP BY when used for ordering."""
|
||||||
|
authors = Author.objects.annotate(contact_count=Count('book')).order_by('?')
|
||||||
|
self.assertQuerysetEqual(authors, [
|
||||||
|
('Adrian Holovaty', 1),
|
||||||
|
('Jacob Kaplan-Moss', 1),
|
||||||
|
('Brad Dayley', 1),
|
||||||
|
('James Bennett', 1),
|
||||||
|
('Jeffrey Forcier', 1),
|
||||||
|
('Paul Bissex', 1),
|
||||||
|
('Wesley J. Chun', 1),
|
||||||
|
('Stuart Russell', 1),
|
||||||
|
('Peter Norvig', 2),
|
||||||
|
], lambda a: (a.name, a.contact_count), ordered=False)
|
||||||
|
|
Loading…
Reference in New Issue