feat: cms softdelet bug fix

This commit is contained in:
2026-06-11 13:57:46 +08:00
parent 32915bc6b4
commit f2dcf3d490
6 changed files with 60 additions and 8 deletions
+11 -4
View File
@@ -37,11 +37,15 @@ class CmsInstitutionSerializer(serializers.ModelSerializer):
value = (value or '').strip()
if not value:
raise AppError('CMS_VALIDATION_ERROR', '机构编码不能为空', status_code=400)
qs = Institution.objects.filter(code=value)
# 唯一性按 all_objects(含已停用)判定:编码唯一约束对软删行仍生效,
# 否则同编码重建会在写库时撞唯一约束抛 500。
qs = Institution.all_objects.filter(code=value)
if self.instance is not None:
qs = qs.exclude(pk=self.instance.pk)
if qs.exists():
raise AppError('CMS_INSTITUTION_CODE_EXISTS', '机构编码已存在', status_code=400)
raise AppError('CMS_INSTITUTION_CODE_EXISTS',
'机构编码已存在(含已停用机构),如需复用请先恢复或更换编码',
status_code=400)
return value
@@ -58,9 +62,12 @@ class CmsDepartmentSerializer(serializers.ModelSerializer):
value = (value or '').strip()
if not value:
raise AppError('CMS_VALIDATION_ERROR', '科室名称不能为空', status_code=400)
qs = Department.objects.filter(name=value)
# 唯一性按 all_objects(含已停用)判定,避免同名重建在写库时撞唯一约束抛 500。
qs = Department.all_objects.filter(name=value)
if self.instance is not None:
qs = qs.exclude(pk=self.instance.pk)
if qs.exists():
raise AppError('CMS_DEPARTMENT_NAME_EXISTS', '科室名称已存在', status_code=400)
raise AppError('CMS_DEPARTMENT_NAME_EXISTS',
'科室名称已存在(含已停用科室),如需复用请先恢复或更换名称',
status_code=400)
return value