Django - 模型 - 递归检索叶节点的父节点

时间:2017-03-08 15:59:29

标签: python django

我有一个User模型类,定义如下:

class CustomUser(models.Model):
    user = models.OneToOneField(User)
    slug = models.SlugField(max_length=35, unique=True,help_text="URI dell'utente che appare sul browser")
    team = models.CharField(max_length=100, null=False, verbose_name="Team")
    area = models.CharField(max_length=100, null=False, verbose_name="Area")
    line_manager = models.ForeignKey('self', null=True, blank=True,related_name='parent')

我想检索CustomUser的所有line_manage。 让我们假设我有:

A
-B 
 -C

其中C是叶子,B和A是我想要检索的值。 我怎么能在django做什么?

1 个答案:

答案 0 :(得分:2)

我没有对此进行过测试,但它应该有效:

class CustomUser(models.Model):
    user = models.OneToOneField(User)
    slug = models.SlugField(max_length=35, unique=True,help_text="URI dell'utente che appare sul browser")
    team = models.CharField(max_length=100, null=False, verbose_name="Team")
    area = models.CharField(max_length=100, null=False, verbose_name="Area")
    line_manager = models.ForeignKey('self', null=True, blank=True,related_name='parent')

    def get_linemanagers(self):
        if self.line_manager is None:
            return CustomUser.objects.none()
        return CustomUser.objects.filter(pk=self.line_manager.pk) | self.line_manager. get_linemanagers()

希望它有所帮助。