Django == 2.2.5
在逻辑上将三个级别嵌套在另一个级别中。 这里的问题是保存方法中的重复代码。
您能帮助我创建一个混音而不重复自己吗?
class Level_1(PhraseMixin, ArchivedMixin, models.Model):
def save(self, *args, **kwargs):
"""
If this level is archived, then make all sublevels archived too.
"""
if self.archived:
level_2_set = self.level_2_set.all()
for level_2_obj in level_2_set:
level_2_obj.archived = True
level_2_obj.save()
super(Level_1, self).save(*args, **kwargs)
class Level_2(ArchivedMixin,
PhraseMixin,
ValidateParentMixin,
models.Model):
parent_level = models.ForeignKey(Level_1,
verbose_name="Level 1",
on_delete=models.CASCADE)
def save(self, *args, **kwargs):
"""
If this level is archived, then make all sublevels archived too.
"""
if self.archived:
level_3_set = self.level_3_set.all()
for level_3_obj in level_3_set:
level_3_obj.archived = True
level_3_obj.save()
super(Level_2, self).save(*args, **kwargs)
class Level_3(PhraseMixin,
ArchivedMixin,
WhereMixin,
ValidateParentMixin,
models.Model):
parent_level = models.ForeignKey(Level_2,
verbose_name="Level 2",
on_delete=models.CASCADE)