fix: base handle_parent时要处理所有相关的父子关系
This commit is contained in:
parent
c7c92fa1d2
commit
cfb09c04f4
|
@ -61,6 +61,10 @@ class ParentModel(models.Model):
|
||||||
|
|
||||||
def init_parent_link(self):
|
def init_parent_link(self):
|
||||||
link = []
|
link = []
|
||||||
|
try:
|
||||||
|
p = self.parent
|
||||||
|
except Exception:
|
||||||
|
self.parent = None
|
||||||
if self.parent is not None:
|
if self.parent is not None:
|
||||||
if self.parent == self:
|
if self.parent == self:
|
||||||
raise Exception(f'{self.__class__.__name__}-{self.id}-存在循环引用')
|
raise Exception(f'{self.__class__.__name__}-{self.id}-存在循环引用')
|
||||||
|
@ -87,9 +91,12 @@ class ParentModel(models.Model):
|
||||||
处理父级关系
|
处理父级关系
|
||||||
"""
|
"""
|
||||||
self.parent_link = self.init_parent_link()
|
self.parent_link = self.init_parent_link()
|
||||||
self.__class__.objects.filter(parent=self.id).update(
|
# 处理相关的所有父子关系
|
||||||
parent_link = self.parent_link + [self.id]
|
relats = self.__class__.objects.filter(parent_link__contains=[self.id])
|
||||||
)
|
for relat in relats:
|
||||||
|
relat.parent_link = relat.init_parent_link()
|
||||||
|
relat.save()
|
||||||
|
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
abstract = True
|
abstract = True
|
||||||
|
|
Loading…
Reference in New Issue