!68 update backend/dvadmin/utils/models.py 处理级联删除

Merge pull request !68 from 老高/N/A
This commit is contained in:
dvadmin
2024-08-29 01:05:57 +00:00
committed by Gitee

View File

@@ -61,8 +61,24 @@ class SoftDeleteModel(models.Model):
"""
重写删除方法,直接开启软删除
"""
self.is_deleted = True
self.save(using=using)
if soft_delete:
self.is_deleted = True
self.save(using=using)
# 级联软删除关联对象
for related_object in self._meta.related_objects:
related_model = getattr(self, related_object.get_accessor_name())
# 处理一对多和多对多的关联对象
if related_object.one_to_many or related_object.many_to_many:
related_objects = related_model.all()
elif related_object.one_to_one:
related_objects = [related_model]
else:
continue
for obj in related_objects:
obj.delete(soft_delete=True)
else:
super().delete(using=using, *args, **kwargs)
class CoreModel(models.Model):