Python 对已评估查询集(Django)进行排序的方法

Python 对已评估查询集(Django)进行排序的方法,python,django,Python,Django,我有以下功能和测试: def create_question(days, question_text="Empty"): time = timezone.now() + datetime.timedelta(days=days) return Question.objects.create(question_text = question_text, pub_date=time) def test_two_past_questions(self): """ T

我有以下功能和测试:

def create_question(days, question_text="Empty"):
    time = timezone.now() + datetime.timedelta(days=days)
    return Question.objects.create(question_text = question_text, pub_date=time) 

def test_two_past_questions(self):
    """
    The questions index page may display multiple questions.
    """
    create_question(question_text="Past question 1.", days=-30)
    create_question(question_text="Past question 2.", days=-5)
    response = self.client.get(reverse('polls:index'))
    self.assertQuerysetEqual(
        response.context['latest_question_list'].order_by('-pub_date'),
        ['<Question: Past question 1.>', '<Question: Past question 2.>'],
    )
据我所知,它生成了一个错误,因为
Queryset
已被计算,而
order\u by
仅用于在数据库中重新排序

如果没有失败的排序attepmpt,我的测试将失败,因为对象的顺序错误:

FAIL: test_two_past_questions (polls.tests.QuestionIndexViewTests)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/Users/sahandzarrinkoub/.local/share/virtualenvs/django/mysite/polls/tests.py", line 77, in test_two_past_questions
    ['<Question: Past question 1.>', '<Question: Past question 2.>'],
  File "/Users/sahandzarrinkoub/.local/share/virtualenvs/django/lib/python3.6/site-packages/django/test/testcases.py", line 972, in assertQuerysetEqual
    return self.assertEqual(list(items), values, msg=msg)
AssertionError: Lists differ: ['<Question: Past question 2.>', '<Question: Past question 1.>'] != ['<Question: Past question 1.>', '<Question: Past question 2.>']

First differing element 0:
'<Question: Past question 2.>'
'<Question: Past question 1.>'

- ['<Question: Past question 2.>', '<Question: Past question 1.>']
?                            ^                               ^

+ ['<Question: Past question 1.>', '<Question: Past question 2.>']
?                            ^                               ^
失败:测试两个过去的问题(轮询、测试、问题索引测试)
----------------------------------------------------------------------
回溯(最近一次呼叫最后一次):
文件“/Users/sahandzarrinkoub/.local/share/virtualenvs/django/mysite/polls/tests.py”,第77行,在过去两个问题的测试中
['', ''],
文件“/Users/sahandzarrinkoub/.local/share/virtualenvs/django/lib/python3.6/site packages/django/test/testcases.py”,第972行,在AssertQuerystequal中
返回self.assertEqual(列表(项),值,msg=msg)
断言错误:列表不同:['',]!=['', '']
第一个不同的元素0:
''
''
- ['', '']
?                            ^                               ^
+ ['', '']
?                            ^                               ^
我想通过按发布日期对它们进行排序来确保它们的顺序正确。有没有一种像对普通列表排序一样对Queryset对象进行排序的方法

FAIL: test_two_past_questions (polls.tests.QuestionIndexViewTests)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/Users/sahandzarrinkoub/.local/share/virtualenvs/django/mysite/polls/tests.py", line 77, in test_two_past_questions
    ['<Question: Past question 1.>', '<Question: Past question 2.>'],
  File "/Users/sahandzarrinkoub/.local/share/virtualenvs/django/lib/python3.6/site-packages/django/test/testcases.py", line 972, in assertQuerysetEqual
    return self.assertEqual(list(items), values, msg=msg)
AssertionError: Lists differ: ['<Question: Past question 2.>', '<Question: Past question 1.>'] != ['<Question: Past question 1.>', '<Question: Past question 2.>']

First differing element 0:
'<Question: Past question 2.>'
'<Question: Past question 1.>'

- ['<Question: Past question 2.>', '<Question: Past question 1.>']
?                            ^                               ^

+ ['<Question: Past question 1.>', '<Question: Past question 2.>']
?                            ^                               ^