perf: 优化mlog list速度3

This commit is contained in:
caoqianming 2025-02-25 17:33:41 +08:00
parent 4e6aa547b5
commit 2010078665
1 changed files with 12 additions and 10 deletions

View File

@ -181,16 +181,18 @@ class MlogViewSet(CustomModelViewSet):
'material_out__name', 'material_out__number', 'material_out__specification', 'material_out__model',]
def add_info_for_list(self, data):
data_dict = {item['id']: {**item, "mlogb_full": [], "mlogb": []} for item in data}
mlogb_qs = Mlogb.objects.filter(mlog__id__in=data_dict.keys()).select_related("material_in", "material_out").order_by("create_time")
mlogb_data = MlogbSerializer(instance=mlogb_qs, many=True).data
for item in mlogb_data:
item_dict = convert_ordereddict(item)
if item_dict["mlog"] in data_dict:
data_dict[item_dict["mlog"]]["mlogb_full"].append(item_dict)
if item.get("material_out", None):
data_dict[item_dict["mlog"]]["mlogb"].append(item_dict)
return list(data_dict.values())
if self.request.query_params.get('with_mlogb', False):
data_dict = {item['id']: {**item, "mlogb_full": [], "mlogb": []} for item in data}
mlogb_qs = Mlogb.objects.filter(mlog__id__in=data_dict.keys()).select_related("material_in", "material_out").order_by("create_time")
mlogb_data = MlogbSerializer(instance=mlogb_qs, many=True).data
for item in mlogb_data:
item_dict = convert_ordereddict(item)
if item_dict["mlog"] in data_dict:
data_dict[item_dict["mlog"]]["mlogb_full"].append(item_dict)
if item.get("material_out", None):
data_dict[item_dict["mlog"]]["mlogb"].append(item_dict)
return list(data_dict.values())
return data
@transaction.atomic
def perform_destroy(self, instance):