perf: 优化mlog list速度2
This commit is contained in:
parent
6653befcdb
commit
4e6aa547b5
|
@ -307,4 +307,13 @@ def build_tree_from_list(data, parent_field="parent"):
|
|||
else:
|
||||
tree.append(item)
|
||||
|
||||
return tree
|
||||
return tree
|
||||
|
||||
def convert_ordereddict(item):
|
||||
"""递归地将 OrderedDict 转换为普通字典"""
|
||||
if isinstance(item, list):
|
||||
return [convert_ordereddict(i) for i in item] # 递归处理列表中的每个元素
|
||||
elif isinstance(item, dict):
|
||||
# 如果是 OrderedDict 或普通字典,遍历所有键值对进行转换
|
||||
return {key: convert_ordereddict(value) for key, value in item.items()}
|
||||
return item
|
|
@ -211,7 +211,7 @@ class MlogbSerializer(CustomModelSerializer):
|
|||
class Meta:
|
||||
model = Mlogb
|
||||
fields = ['id', 'material_out', 'count_ok',
|
||||
'material_out_', 'material_out_name']
|
||||
'material_out_', 'material_out_name', "mlog"]
|
||||
extra_kwargs = {
|
||||
'material_out': {'required': True, 'allow_null': False}}
|
||||
|
||||
|
|
|
@ -33,6 +33,7 @@ from apps.wpmw.models import Wpr
|
|||
from apps.qm.models import QctMat, Ftest
|
||||
from apps.enm.models import EnStat
|
||||
from django.db.models import Q
|
||||
from apps.utils.tools import convert_ordereddict
|
||||
|
||||
|
||||
# Create your views here.
|
||||
|
@ -184,12 +185,11 @@ class MlogViewSet(CustomModelViewSet):
|
|||
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 = dict(item)
|
||||
mlog_id = item_dict.get("mlog")
|
||||
if mlog_id in data_dict:
|
||||
data_dict[mlog_id]["mlogb_full"].append(item_dict)
|
||||
if item.get("material_out"):
|
||||
data_dict[mlog_id]["mlogb"].append(item_dict)
|
||||
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())
|
||||
|
||||
@transaction.atomic
|
||||
|
|
Loading…
Reference in New Issue