initial commit
This commit is contained in:
92
utils/chen_crud.py
Normal file
92
utils/chen_crud.py
Normal file
@@ -0,0 +1,92 @@
|
||||
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
|
||||
Reference in New Issue
Block a user