perf: 优化mlog和handover的查询

This commit is contained in:
caoqianming 2025-05-23 09:54:24 +08:00
parent 62f261fd75
commit 9c1ba20d36
2 changed files with 7 additions and 2 deletions

View File

@ -111,7 +111,9 @@ class MlogFilter(filters.FilterSet):
} }
def filter_cbatch(self, queryset, name, value): def filter_cbatch(self, queryset, name, value):
return queryset.filter(Q(b_mlog__batch=value) | Q(batch=value)).distinct() qs1 = queryset.filter(batch=value)
qs2 = queryset.filter(b_mlog__batch=value)
return qs1.union(qs2)
class HandoverFilter(filters.FilterSet): class HandoverFilter(filters.FilterSet):
@ -126,7 +128,9 @@ class HandoverFilter(filters.FilterSet):
return queryset.filter(send_dept__id=value)|queryset.filter(recive_dept__id=value) return queryset.filter(send_dept__id=value)|queryset.filter(recive_dept__id=value)
def filter_cbatch(self, queryset, name, value): def filter_cbatch(self, queryset, name, value):
return queryset.filter(Q(b_handover__batch=value) | Q(batch=value)).distinct() qs1 = queryset.filter(Q(batch=value)|Q(new_batch=value))
qs2 = queryset.filter(Q(b_handover__batch=value))
return qs1.union(qs2)
class Meta: class Meta:
model = Handover model = Handover

View File

@ -384,6 +384,7 @@ class HandoverViewSet(CustomModelViewSet):
filterset_class = HandoverFilter filterset_class = HandoverFilter
search_fields = ['id', 'material__name', search_fields = ['id', 'material__name',
'material__number', 'material__specification', 'batch', 'material__model', 'b_handover__batch', "new_batch"] 'material__number', 'material__specification', 'batch', 'material__model', 'b_handover__batch', "new_batch"]
prefetch_related_fields = ["b_handover"]
def perform_destroy(self, instance): def perform_destroy(self, instance):
user = self.request.user user = self.request.user