factory/apps/wpmw/views.py

37 lines
1.2 KiB
Python

from apps.utils.viewsets import CustomModelViewSet, CustomGenericViewSet
from apps.utils.mixins import CustomListModelMixin, RetrieveModelMixin
from apps.wpmw.models import Wpr, WprDefect
from apps.wpmw.serializers import WprSerializer
class WprViewSet(CustomListModelMixin, RetrieveModelMixin, CustomGenericViewSet):
"""动态产品
动态产品
"""
perms_map = {"get": "*"}
select_related_fields = ["wm", "mb", "material"]
prefetch_related_fields = ["defects"]
queryset = Wpr.objects.all()
serializer_class = WprSerializer
filterset_fields = {
"mb": ["exact", "isnull"],
"wm": ["exact", "isnull"],
"material__process": ["exact"],
"state": ["exact"],
"defects": ["exact"],
"number": ["exact"]
}
ordering = ["number", "create_time"]
ordering_fields = ["number", "create_time", "update_time"]
search_fields = ["number", "material__name", "material__model", "material__specification"]
def filter_queryset(self, queryset):
qs = super().filter_queryset(queryset)
if "mb__isnull" in self.request.query_params or "wm__isnull" in self.request.query_params:
pass
else:
qs.exclude(mb=None, wm=None)
return qs