From 4050d4137011c373a101e4b17909240608d94aac Mon Sep 17 00:00:00 2001 From: caoqianming Date: Thu, 16 Jul 2026 12:03:47 +0800 Subject: [PATCH] =?UTF-8?q?=E8=BD=A6=E9=97=B4=E5=BA=93=E5=AD=98=E5=88=97?= =?UTF-8?q?=E8=A1=A8=E8=A1=A5=E9=BD=90=E5=85=B3=E8=81=94=E5=AD=97=E6=AE=B5?= =?UTF-8?q?select=5Frelated,=E6=B6=88=E9=99=A4=E5=89=A9=E4=BD=99N+1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit WMaterialViewSet 列表序列化查询数从随行数线性增长降为常数1条: - 补 mgroup/material_ofrom/material_origin/defect 的 select_related - material_ofrom/material_origin 用 StringRelatedField(__str__ 取 process.name), 故用 __process 嵌套路径带上工序表, 避免每行回查 mtm_process Co-Authored-By: Claude Opus 4.8 (1M context) --- apps/wpm/views.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/apps/wpm/views.py b/apps/wpm/views.py index dc2e5809..00627f67 100644 --- a/apps/wpm/views.py +++ b/apps/wpm/views.py @@ -176,7 +176,9 @@ class WMaterialViewSet(CustomCreateModelMixin, DestroyModelMixin, CustomListMode queryset = WMaterial.objects.filter(count__gt=0) serializer_class = WMaterialSerializer create_serializer_class = WMaterialCreateSerializer - select_related_fields = ["material", "belong_dept", "material__process", "supplier"] + # material_ofrom/material_origin 用 StringRelatedField, 其 __str__ 会取 process.name, 故带上 __process + select_related_fields = ["material__process", "belong_dept", "supplier", "mgroup", + "material_ofrom__process", "material_origin__process", "defect"] search_fields = ["material__name", "material__specification", "batch", "material__model", "defect__name", "notok_sign"] filterset_class = WMaterialFilter ordering_fields = ["update_time", "state", "count", "count_xtest"]