1
0
forked from erp-dev/erp

fix: query param of api_man

This commit is contained in:
2025-12-09 16:34:46 +08:00
parent d61a644d92
commit 4188bae0fc
12 changed files with 181 additions and 5 deletions

View File

@@ -2,6 +2,8 @@ from rest_framework import viewsets
from rest_framework.exceptions import PermissionDenied
from rest_framework.pagination import LimitOffsetPagination
from rest_framework.permissions import IsAuthenticated, DjangoModelPermissions
from rest_framework.decorators import action
from rest_framework.response import Response
from django_filters.rest_framework import DjangoFilterBackend
from django_filters import rest_framework as dj_filters
@@ -68,11 +70,18 @@ class BasicInfoFilterMixin:
def filter_queryset(self, queryset):
field = self._detect_filter_field()
model = getattr(getattr(self, 'queryset', None), 'model', None)
if not field or not model:
return super().filter_queryset(queryset)
if field and model:
self.filterset_class = self._build_filterset_class(model, field)
self.filterset_class = self._build_filterset_class(model, field)
return super().filter_queryset(queryset)
qs = super().filter_queryset(queryset)
# 统一按创建时间倒序排序(如果模型存在 created_at 字段)
model = getattr(qs, 'model', model)
if model:
field_names = {f.name for f in model._meta.get_fields() if hasattr(f, 'name')}
if 'created_at' in field_names:
return qs.order_by('-created_at')
return qs
class BaseViewSet(BasicInfoFilterMixin, viewsets.ModelViewSet):
@@ -106,6 +115,11 @@ class QuickInputViewSet(BasicInfoFilterMixin, viewsets.ModelViewSet):
qs = qs.filter(group=group)
return qs
@action(detail=False, methods=['get'], url_path='groups')
def groups(self, request):
groups = serializers.basic_models.QuickInput.objects.values_list('group', flat=True).distinct()
return Response(groups)
class ProductViewSet(BaseViewSet):
queryset = serializers.basic_models.Product.objects