AssertionError: Cannot reorder a query once a slice has been taken.
问题描述
# 目的:取 Article 表中前十数据并将获取到的十条数据根据 pub_date 排序
queryset = Article.objects.all()[:10].order_by("pub_date")# 报错:1069"""Return a new QuerySet instance with the ordering changed."""1070assert self.query.can_filter(), \
->1071"Cannot reorder a query once a slice has been taken."1072 obj = self._chain()1073 obj.query.clear_ordering(force_empty=False)
AssertionError: Cannot reorder a query once a slice has been taken.
AssertionError: Cannot filter a query once a slice has been taken.
问题描述
# 目的:取 Article 表中前十数据并从获取到的十条数据里过滤出 pub_date=2020-07 的数据
queryset = Article.objects.all()[:10].filter(pub_date="2020-07")# 报错:902if args or kwargs:903assert self.query.can_filter(), \
-->904"Cannot filter a query once a slice has been taken."905906 clone = self._chain()
AssertionError: Cannot filter a query once a slice has been taken.
解决方法
# 1. 先切片获取前十条数据
queryset = Article.objects.all()[:10]# 2. 通过列表生成器获取
queryset =[item for item in queryset if item.pub_date =="2020-07"]