python - admin.py 中查询集中订单的单元测试
问题描述
我在 django 1.11 的管理中提出了解决方案 - 在 2 个月(60 天)内显示在管理面板即将到来的事件列表的顶部。休息(也即将到来,但例如 3 个月 - 90 天)如下所示。
我想测试我的解决方案,所以我编写了单元测试。但是当我打印对象时,它的顺序是:Event title 1, Event title 2, Event title 3
并且应该是:Event title 1, Event title 3, Event title 2
。
我不知道我在哪里犯错了。
这是 admin.py 中的查询集
def get_queryset(self, request):
next_two_months = datetime.today() + timedelta(days=60)
not_three_months = datetime.today() + timedelta(days=90)
qs = super(EventAdmin, self).get_queryset(request)
next_two_months_events_list = qs.filter(event_from__gte=next_two_months, event_from__lte=not_three_months)
rest_events_list = qs.filter(date__lte=datetime.today()).order_by('event_from')
return next_two_months_events_list | rest_events_list
这是我的测试代码:
def test_queryset_events_list(self):
self.client.login(**self._get_superuser_data())
factories.EventFactory.create(title='Event title 1', date=date(2018, 7, 24),
event_from=datetime(2018, 8, 22, 10, 0, 0, 0),
event_to=datetime(2018, 8, 24, 10, 0, 0, 0))
factories.EventFactory.create(title='Event title 2', date=date(2018, 7, 24),
event_from=datetime(2019, 7, 24, 10, 0, 0, 0),
event_to=datetime(2019, 7, 29, 10, 0, 0, 0))
factories.EventFactory.create(title='Event title 3', date=date(2018, 7, 24),
event_from=datetime(2019, 2, 22, 10, 0, 0, 0),
event_to=datetime(2019, 2, 24, 10, 0, 0, 0))
url = reverse('admin:events_event_changelist')
response = self.client.get(url)
print(models.Event.objects.all()[0])
print(models.Event.objects.all()[1])
print(models.Event.objects.all()[2])
self.assertEquals(models.Event.objects.count(), 3)
解决方案
推荐阅读
- xml - 谁能知道这是什么语言?以及如何以 NetBeans 形式连接它?
- typescript - 如何在元组中重用剩余类型?
- php - 如何降价多个电子邮件刀片?
- excel - Excel WORKDAY.INTL 公式 - 需要帮助找出我的错误 - 公式似乎计算错误日期
- twitter-bootstrap - bootstrap collapse 无法正常工作,打开后立即关闭
- python - 文件太大 无法刷新事件
- reactjs - 如何使用 Material UI 主题自定义按钮的背景颜色
- read-the-docs - 使用 MkDocs 引擎为 ReadTheDocs 站点配置徽标
- flutter - Flutter 错误异常 customTrace 和 fromJSON
- java - 如何在枚举中存储类引用?