Files
cdtestplant_v1/utils/chen_crud.py
2025-04-29 18:09:00 +08:00

93 lines
3.3 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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