我正在努力寻找一种有效的方式来完成Django m2m关系。
我的用法是:
我的模型m2m字段类似于:parent = models.ManyToManyField('self', blank=True, default=None, symmetrical=False, verbose_name="")
目前我写的是这样的:
if model == Ensemble:
children = elem.ensemble_set.all()
for child in children:
update_elem_statut(child, statut)
for en in child.ensemble_set.all():
update_elem_statut(en, statut)
if len(en.ensemble_set.all()):
for en_child in en.ensemble_set.all():
update_elem_statut(en_child, statut)
但这绝对不是递归的。我需要遍历每个孩子,直到只有儿童元素。我不知道什么是最蟒蛇/ djangoish方式来做到这一点。
提前感谢您的帮助。
答案 0 :(得分:2)
简单的方法是在模型中添加一个方法,在所有当前对象上调用相同的方法
class Ensemble(models.Model):
def update_status(self, status):
self.status = status
self.save()
for child in self.ensemble_set.all():
child.update_status(status)