feat: 优化mlog list查询

This commit is contained in:
caoqianming 2025-08-28 09:54:56 +08:00
parent 1d0861e0e7
commit c47b66af6c
2 changed files with 14 additions and 9 deletions

View File

@ -256,6 +256,7 @@ class MlogListSerializer(CustomModelSerializer):
source='create_by.name', read_only=True)
update_by_name = serializers.CharField(
source='update_by.name', read_only=True)
# + 0.3s
material_in_ = MaterialSimpleSerializer(
source='material_in', read_only=True)
material_out_ = MaterialSimpleSerializer(
@ -264,6 +265,7 @@ class MlogListSerializer(CustomModelSerializer):
source='material_out', read_only=True)
material_in_name = serializers.StringRelatedField(
source='material_in', read_only=True)
#
handle_user_name = serializers.CharField(
source='handle_user.name', read_only=True)
handle_user_2_name = serializers.CharField(
@ -275,15 +277,17 @@ class MlogListSerializer(CustomModelSerializer):
equipment_2_name = serializers.StringRelatedField(
source='equipment_2', read_only=True)
shift_name = serializers.CharField(source='shift.name', read_only=True)
ticket_ = TicketSimpleSerializer(source='ticket', read_only=True)
test_user_name = serializers.CharField(source='test_user.name', read_only=True)
ticket_ = TicketSimpleSerializer(source='ticket', read_only=True)
submit_user_name = serializers.CharField(source='submit_user.name', read_only=True)
handle_users_ = UserSimpleSerializer(
source='handle_users', many=True, read_only=True)
submit_user_name = serializers.CharField(source='submit_user.name', read_only=True)
class Meta:
model = Mlog
fields = '__all__'
# exclude = ["equipments","handle_users", "material_outs"]
class MlogbDetailSerializer(CustomModelSerializer):

View File

@ -187,13 +187,14 @@ class MlogViewSet(CustomModelViewSet):
queryset = Mlog.objects.all()
serializer_class = MlogSerializer
list_serializer_class = MlogListSerializer
select_related_fields = ['create_by', 'update_by', 'mtask', 'mtaskb',
'handle_user', 'handle_user_2', 'equipment', 'mgroup__belong_dept',
'equipment_2', 'material_in', 'material_out', 'route__routepack', 'submit_user',
'supplier', 'ticket', 'mgroup__process', 'test_user', 'handle_leader', 'test_user', 'team',
'material_in__process', 'material_out__process']
prefetch_related_fields = ['handle_users',
'material_outs', 'b_mlog', 'equipments']
select_related_fields = ["create_by", "update_by", "handle_user", "equipment", "mgroup", "material_in", "material_out",
'material_in__process', 'material_out__process', "mgroup__process"]
# select_related_fields = ['create_by', 'update_by', 'mtask', 'mtaskb', 'mgroup',
# 'handle_user', 'handle_user_2', 'equipment', 'mgroup__belong_dept',
# 'equipment_2', 'material_in', 'material_out', 'route__routepack', 'submit_user',
# 'supplier', 'ticket', 'mgroup__process', 'test_user', 'handle_leader', 'test_user', 'team',
# 'material_in__process', 'material_out__process', "shift", "route"]
prefetch_related_fields = ['handle_users', 'material_outs', 'equipments']
filterset_class = MlogFilter
search_fields = ['material_in__name',
'material_in__number', 'material_in__specification', 'batch', 'material_in__model',