django 数据操作存在就更新不存在就新增,代码的写法示例
class ajax_check_lists(BaseView):
def post(self, request, *args, **kwargs):
try:
data = json.loads(request.body.decode('utf-8'))
# 过滤掉为空的参数
filtered_data = {key: value for key, value in data.items() if value is not ""}
# 检查是否所有参数都为空
if not filtered_data:
raise ValueError("参数不能为空")
# # 创建MarketModel实例时只包括非空参数
# 查询数据库是否存在相同 type 和 project_id 的记录
existing_record = ChecklistModel.objects.using('company').filter(type=filtered_data.get('type'),
project_id=filtered_data.get('project_id'),
check_name=filtered_data.get('check_name'),
process=filtered_data.get('process')
).first()
if existing_record:
# 如果记录存在,则更新
for key, value in filtered_data.items():
setattr(existing_record, key, value)
existing_record.save(using='company')
else:
# 如果记录不存在,则新增
mymodel = ChecklistModel(**filtered_data)
mymodel.save(using='company')
response_data = {'result': 'success'}
except Exception as e:
response_data = {'result': 'error', 'message': str(e)}
return JsonResponse(response_data)