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>
|
||||
Esdras Beleza <linux@esdrasbeleza.com>
|
||||
Espen Grindhaug <http://grindhaug.org/>
|
||||
Étienne Beaulé <beauleetienne0@gmail.com>
|
||||
Eugene Lazutkin <http://lazutkin.com/blog/>
|
||||
Evan Grim <https://github.com/egrim>
|
||||
Fabrice Aneche <akh@nobugware.com>
|
||||
|
|
|
@ -154,6 +154,9 @@ class Random(NumericOutputFieldMixin, Func):
|
|||
def as_sqlite(self, compiler, connection, **extra_context):
|
||||
return super().as_sql(compiler, connection, function='RAND', **extra_context)
|
||||
|
||||
def get_group_by_cols(self, alias=None):
|
||||
return []
|
||||
|
||||
|
||||
class Round(Transform):
|
||||
function = 'ROUND'
|
||||
|
|
|
@ -1315,3 +1315,18 @@ class AggregateTestCase(TestCase):
|
|||
# with self.assertNumQueries(1) as ctx:
|
||||
# self.assertSequenceEqual(books_qs, [book])
|
||||
# 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