Files
cdtestplant_v1/utils/chen_crud.py

93 lines
3.3 KiB
Python
Raw Normal View History

2025-04-29 18:09:00 +08:00
from django.shortcuts import get_object_or_404
# 1.1)这个函数参数1request、参数2schema或schema.dict()、参数3ORM模型
def create(request, data, model):
if not isinstance(data, dict):
data = data.dict()
query_set = model.objects.create(**data)
return query_set
# 1.2)新增快捷函数直接填入data
def createWithOutRequestParam(data, model):
if not isinstance(data, dict):
data = data.dict()
query_set = model.objects.create(**data)
return query_set
# 2.1)更新便捷函数特别注意参数0为request后面有用参数1id参数2schema参数3ORM模型
def update(request, id, data, model):
dict_data = data.dict()
instance = get_object_or_404(model, id=id)
for attr, value in dict_data.items():
setattr(instance, attr, value)
instance.save()
return instance
# 2.2)更新便捷函数-无request参数 -> data参数为schema对象
def updateWithoutRequestParam(id, data, model):
dict_data = data.model_dump(exclude_none=True)
instance = get_object_or_404(model, id=id)
for attr, value in dict_data.items():
if attr != 'id': # 不对id更新
setattr(instance, attr, value)
instance.save()
return instance
# 多个id删除便捷函数参数1:ids数组参数2ORM模型
def multi_delete(ids, model):
for item in ids:
# 删除多对多关系 - project
instance = get_object_or_404(model, pk=item)
instance.delete()
pass
# project删除对应problem问题单多对多关系也要删除
def multi_delete_project(ids, model):
idents = []
for item in ids:
instance = get_object_or_404(model, pk=item)
# (注意project所属problem全部删除且关联关系删除)
for problem in instance.projField.all():
problem.case.clear()
idents.append(instance.ident)
instance.delete()
return idents
# testDemand多个id删除便捷函数参数1:ids数组参数2ORM模型
def multi_delete_testDemand(ids, model):
for item in ids:
instance = get_object_or_404(model, pk=item)
# 多对多删除case下面的problem关联删除
for case in instance.tcField.all():
case.caseField.clear()
instance.delete()
pass
# dut的删除需要多对多case-problem
def multi_delete_dut(ids, model):
for item in ids:
instance = get_object_or_404(model, pk=item)
# 多对多删除case下面的problem关联删除
for case in instance.ducField.all():
case.caseField.clear()
instance.delete()
pass
# design的多个id删除便捷函数参数1:ids数组参数2ORM模型
def multi_delete_design(ids, model):
for item in ids:
instance = get_object_or_404(model, pk=item)
# 多对多删除case下面problem关联删除
for case in instance.dcField.all():
case.caseField.clear()
instance.delete()
pass
# 由于case有多对多关系所以单独提出来删除
def multi_delete_case(ids, model):
for item in ids:
instance = get_object_or_404(model, pk=item)
instance.caseField.clear()
instance.delete()
pass