def test_order_by_queryset(self):
"""Ensure we can order by QuerySet and then other fields."""
# Order by title, but don't interleave each QuerySet.
with self.assertNumQueries(0):
qss = self.all.order_by('#', 'title')
self.assertEqual(qss.query.order_by, ['#', 'title'])
self.assertEqual(
qss.query._querysets[0].query.order_by,
('title',) if DJANGO_VERSION >= (2,) else ['title'],
)
# Ensure that _ordered_iterator isn't called.
with patch('queryset_sequence.QuerySequence._ordered_iterator',
side_effect=AssertionError('_ordered_iterator should not be called')):
# Check the titles are properly ordered.
data = [it.title for it in qss]
expected = [
# First the Books, in order.
'Biography',
'Fiction',
# Then the Articles, in order.
'Alice in Django-land',
'Django Rocks',
'Some Article',
]
self.assertEqual(data, expected)
test_querysetsequence.py 文件源码
python
阅读 25
收藏 0
点赞 0
评论 0
评论列表
文章目录