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
|
from rest_framework.exceptions import ParseError
|
||||||
|
|
||||||
|
|
||||||
|
@ -9,8 +9,25 @@ class MyPagination(PageNumberPagination):
|
||||||
page_size = 10
|
page_size = 10
|
||||||
page_size_query_param = 'page_size'
|
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):
|
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:
|
if queryset.count() < 3000:
|
||||||
return None
|
return None
|
||||||
raise ParseError('单次请求数据量大,请分页获取')
|
raise ParseError('单次请求数据量大,请分页获取')
|
||||||
|
|
|
@ -6,8 +6,10 @@ from rest_framework.request import Request
|
||||||
|
|
||||||
|
|
||||||
class PkSerializer(serializers.Serializer):
|
class PkSerializer(serializers.Serializer):
|
||||||
ids = serializers.ListField(child=serializers.CharField(max_length=20), label="主键ID列表")
|
ids = serializers.ListField(
|
||||||
soft = serializers.BooleanField(label="是否软删除", default=True, required=False)
|
child=serializers.CharField(max_length=20), label="主键ID列表")
|
||||||
|
soft = serializers.BooleanField(
|
||||||
|
label="是否软删除", default=True, required=False)
|
||||||
|
|
||||||
|
|
||||||
class GenSignatureSerializer(serializers.Serializer):
|
class GenSignatureSerializer(serializers.Serializer):
|
||||||
|
@ -39,17 +41,20 @@ class CustomModelSerializer(DynamicFieldsMixin, serializers.ModelSerializer):
|
||||||
def update(self, instance, validated_data):
|
def update(self, instance, validated_data):
|
||||||
if self.request:
|
if self.request:
|
||||||
if hasattr(instance, 'update_by'):
|
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)
|
return super().update(instance, validated_data)
|
||||||
|
|
||||||
|
|
||||||
class QuerySerializer(serializers.Serializer):
|
class QuerySerializer(serializers.Serializer):
|
||||||
field = serializers.CharField(label='字段名')
|
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='值')
|
value = serializers.CharField(label='值')
|
||||||
|
|
||||||
|
|
||||||
class ComplexSerializer(serializers.Serializer):
|
class ComplexSerializer(serializers.Serializer):
|
||||||
# page = serializers.IntegerField(min_value=0)
|
page = serializers.IntegerField(min_value=0, required=False)
|
||||||
# page_size = serializers.IntegerField(min_value=1)
|
page_size = serializers.IntegerField(min_value=1, required=False)
|
||||||
# query = serializers.CharField(label='获取字段名')
|
querys = serializers.ListField(child=QuerySerializer(
|
||||||
querys = serializers.ListField(child=QuerySerializer(many=True), label="查询列表", required=False)
|
many=True), label="查询列表", required=False)
|
||||||
|
|
Loading…
Reference in New Issue