93 lines
3.3 KiB
Python
93 lines
3.3 KiB
Python
from django.shortcuts import get_object_or_404
|
||
|
||
# 1.1)这个函数参数1:request、参数2:schema或schema.dict()、参数3:ORM模型
|
||
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后面有用,参数1:id,参数2:schema,参数3:ORM模型
|
||
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数组,参数2:ORM模型
|
||
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数组,参数2:ORM模型
|
||
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数组,参数2:ORM模型
|
||
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
|