给定此模型:
class Role(models.Model):
title = models.CharField(max_length=255, verbose_name='Role Title')
parents = models.ManyToManyField("self", symmetrical=False)
skills = models.ManyToManyField(Skill)
递归获取与此“角色”对象及其父对象相关的所有“技能”对象的列表的最有效方法是什么?
例如,如果所讨论的角色对象是“经理”,它将从“团队领导”继承技能,而“团队领导”从“团队成员”等继承技能。
2条答案
按热度按时间eulz3vhy1#
尝试使用helper函数,如下所示:
然后使用此方法获取角色及其父级的所有技能:
这种解决方案避免了多次迭代父级的需要,使其更加高效。它还提供了一种方便的方法来获取角色及其父级的所有技能,可以在需要的任何地方调用这些技能。
f45qwnt82#
我想你得一次买一批。
或者如果你只是想要一套独特的技能,可以用
set
代替list
。当然,您可以将其编写为modelmanager方法,以便在需要时可以轻松地使用它。