车间库存列表补齐关联字段select_related,消除剩余N+1
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) <noreply@anthropic.com>
This commit is contained in:
parent
1e94027e17
commit
4050d41370
|
|
@ -176,7 +176,9 @@ class WMaterialViewSet(CustomCreateModelMixin, DestroyModelMixin, CustomListMode
|
||||||
queryset = WMaterial.objects.filter(count__gt=0)
|
queryset = WMaterial.objects.filter(count__gt=0)
|
||||||
serializer_class = WMaterialSerializer
|
serializer_class = WMaterialSerializer
|
||||||
create_serializer_class = WMaterialCreateSerializer
|
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"]
|
search_fields = ["material__name", "material__specification", "batch", "material__model", "defect__name", "notok_sign"]
|
||||||
filterset_class = WMaterialFilter
|
filterset_class = WMaterialFilter
|
||||||
ordering_fields = ["update_time", "state", "count", "count_xtest"]
|
ordering_fields = ["update_time", "state", "count", "count_xtest"]
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue