gpt4 book ai didi

python - Django Rest Framework (DRF) 如何根据 query_params 设置分页类?

转载 作者:行者123 更新时间:2023-11-30 22:51:30 25 4
gpt4 key购买 nike

我尝试根据 query_params 在 View 集上使用不同的分页类集。

class BlockViewSet(viewsets.ModelViewSet):
pagination_class = defaultPaginationClass

def get_queryset(self):
queryset = Block.objects.all()
user = self.request.query_params.get('user', None)
if user is no None:
queryset = queryset.filter(user=user)
return queryset

因此,如果向 /block/ 发出 get 请求,我想使用 defaultPagination 类,而如果向 /block/?user=1 发出请求,我想使用 customPagination 类。

最佳答案

尝试重新定义 paginator 属性,如果有用户查询参数,请将自定义分页类分配给 self._paginator

@property
def paginator(self):
"""
The paginator instance associated with the view, or `None`.
"""
if not hasattr(self, '_paginator'):
if self.pagination_class is None:
self._paginator = None
else:
user = self.request.query_params.get('user', None)
if user is not None:
self._paginator = customPaginationClass()
else:
self._paginator = self.pagination_class()
return self._paginator

决赛

class BlockViewSet(viewsets.ModelViewSet):
pagination_class = defaultPaginationClass

@property
def paginator(self):
"""
The paginator instance associated with the view, or `None`.
"""
if not hasattr(self, '_paginator'):
if self.pagination_class is None:
self._paginator = None
else:
user = self.request.query_params.get('user', None)
if user is not None:
self._paginator = customPaginationClass()
else:
self._paginator = self.pagination_class()
return self._paginator

def get_queryset(self):
queryset = Block.objects.all()
user = self.request.query_params.get('user', None)
if user is no None:
queryset = queryset.filter(user=user)
return queryset

关于python - Django Rest Framework (DRF) 如何根据 query_params 设置分页类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38988272/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com