def get_queryset(self):
normal_posts = Post.objects.filter(field1='value1').order_by('another_field_1')
featured_posts = Post.objects.filter(field2='value2').order_by('another_field_2')
all_posts = (normal_posts | featured_posts) #does not preserve the order
return all_posts
我使用DjangoFilterBackend和filterset_class来处理分页查询结果。因此无法在下面使用。
normal_posts.union(featured_posts) #django.db.utils.NotSupportedError: Calling QuerySet.filter() after union() is not supported.
我也尝试使用itertools import chain中的,但是它没有多大帮助,因为它返回的是列表而不是查询集。
请建议。
1条答案
按热度按时间vnjpjtjt1#
为了允许每个过滤器在合并两个过滤器时都有自己的order选项,您可以将此answer修改为一个非常类似的问题,并基于实际的queryset过滤器添加一个额外的注解,并将其用作
order_by
的辅助键: