feat: base 从request.data获取page和size
This commit is contained in:
parent
779488589a
commit
7eba5a8e13
|
@ -1,4 +1,4 @@
|
|||
from rest_framework.pagination import PageNumberPagination
|
||||
from rest_framework.pagination import PageNumberPagination, _positive_int
|
||||
from rest_framework.exceptions import ParseError
|
||||
|
||||
|
||||
|
@ -9,8 +9,25 @@ class MyPagination(PageNumberPagination):
|
|||
page_size = 10
|
||||
page_size_query_param = 'page_size'
|
||||
|
||||
def get_page_number(self, request, paginator):
|
||||
if 'page' in request.data:
|
||||
return request.data['page']
|
||||
return super().get_page_number(request, paginator)
|
||||
|
||||
def get_page_size(self, request):
|
||||
if 'page_size' in request.data:
|
||||
try:
|
||||
return _positive_int(
|
||||
request.data['page_size'],
|
||||
strict=True,
|
||||
cutoff=self.max_page_size
|
||||
)
|
||||
except (KeyError, ValueError):
|
||||
pass
|
||||
return super().get_page_size(request)
|
||||
|
||||
def paginate_queryset(self, queryset, request, view=None):
|
||||
if request.query_params.get('pageoff', None) or request.query_params.get('page', None) == '0':
|
||||
if request.query_params.get('pageoff', None) or request.query_params.get('page', None) == '0' or request.data.get('page', None) in (0, '0'):
|
||||
if queryset.count() < 3000:
|
||||
return None
|
||||
raise ParseError('单次请求数据量大,请分页获取')
|
||||
|
|
|
@ -6,8 +6,10 @@ from rest_framework.request import Request
|
|||
|
||||
|
||||
class PkSerializer(serializers.Serializer):
|
||||
ids = serializers.ListField(child=serializers.CharField(max_length=20), label="主键ID列表")
|
||||
soft = serializers.BooleanField(label="是否软删除", default=True, required=False)
|
||||
ids = serializers.ListField(
|
||||
child=serializers.CharField(max_length=20), label="主键ID列表")
|
||||
soft = serializers.BooleanField(
|
||||
label="是否软删除", default=True, required=False)
|
||||
|
||||
|
||||
class GenSignatureSerializer(serializers.Serializer):
|
||||
|
@ -39,17 +41,20 @@ class CustomModelSerializer(DynamicFieldsMixin, serializers.ModelSerializer):
|
|||
def update(self, instance, validated_data):
|
||||
if self.request:
|
||||
if hasattr(instance, 'update_by'):
|
||||
validated_data['update_by'] = getattr(self.request, 'user', None)
|
||||
validated_data['update_by'] = getattr(
|
||||
self.request, 'user', None)
|
||||
return super().update(instance, validated_data)
|
||||
|
||||
|
||||
class QuerySerializer(serializers.Serializer):
|
||||
field = serializers.CharField(label='字段名')
|
||||
compare = serializers.ChoiceField(label='比较式', choices=["", "!", "gte", "gt", "lte", "lt", "in", "contains"])
|
||||
compare = serializers.ChoiceField(
|
||||
label='比较式', choices=["", "!", "gte", "gt", "lte", "lt", "in", "contains"])
|
||||
value = serializers.CharField(label='值')
|
||||
|
||||
|
||||
class ComplexSerializer(serializers.Serializer):
|
||||
# page = serializers.IntegerField(min_value=0)
|
||||
# page_size = serializers.IntegerField(min_value=1)
|
||||
# query = serializers.CharField(label='获取字段名')
|
||||
querys = serializers.ListField(child=QuerySerializer(many=True), label="查询列表", required=False)
|
||||
page = serializers.IntegerField(min_value=0, required=False)
|
||||
page_size = serializers.IntegerField(min_value=1, required=False)
|
||||
querys = serializers.ListField(child=QuerySerializer(
|
||||
many=True), label="查询列表", required=False)
|
||||
|
|
Loading…
Reference in New Issue