MCPcopy
hub / github.com/django/django / test_ordering_with_extra

Method test_ordering_with_extra

tests/queries/tests.py:1871–1894  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

1869 )
1870
1871 def test_ordering_with_extra(self):
1872 # Ordering of extra() pieces is possible, too and you can mix extra
1873 # fields and model fields in the ordering.
1874 self.assertSequenceEqual(
1875 Ranking.objects.extra(
1876 tables=["django_site"], order_by=["-django_site.id", "rank"]
1877 ),
1878 [self.rank1, self.rank2, self.rank3],
1879 )
1880
1881 sql = "case when %s > 2 then 1 else 0 end" % connection.ops.quote_name("rank")
1882 qs = Ranking.objects.extra(select={"good": sql})
1883 self.assertEqual(
1884 [o.good for o in qs.extra(order_by=("-good",))], [True, False, False]
1885 )
1886 self.assertSequenceEqual(
1887 qs.extra(order_by=("-good", "id")),
1888 [self.rank3, self.rank2, self.rank1],
1889 )
1890
1891 # Despite having some extra aliases in the query, we can still omit
1892 # them in a values() query.
1893 dicts = qs.values("id", "rank").order_by("id")
1894 self.assertEqual([d["rank"] for d in dicts], [2, 1, 3])
1895
1896 def test_ticket7256(self):
1897 # An empty values() call includes all aliases, including those from an

Callers

nothing calls this directly

Calls 4

order_byMethod · 0.80
extraMethod · 0.45
quote_nameMethod · 0.45
valuesMethod · 0.45

Tested by

no test coverage detected