相关疑难解决方法(0)

如何有效地递归查询django?

我有一个模型,看起来像:

class StaffMember(models.Model):

    id = models.OneToOneField(to=User, unique=True, primary_key=True, related_name='staff_member')
    supervisor = models.ForeignKey(to='self', null=True, blank=True, related_name='team_members')
Run Code Online (Sandbox Code Playgroud)

我当前的团队层次结构的设计方式是让管理员(谁是最重要的层次结构).现在,让我们说3个人(A,B,C)向管理员报告,A,B和C中的每个人都有他们自己的团队向他们报告,依此类推.

对于任何员工,我想找到所有团队成员(沸腾到最底层次的层次结构).我目前获取一个人所有团队成员的方法如下:

def get_team(self):
    team = [self]
    for c in self.team_members.all():
        team += list(c.get_team())
        if len(team) > 2000:
            break
    return team
Run Code Online (Sandbox Code Playgroud)

我通过以下方式获得成员的团队成员:

member = StaffMember.objects.get(pk=72)
team = member.get_team()
Run Code Online (Sandbox Code Playgroud)

但显然,这导致了很多db调用,我的API最终会超时.什么可以更有效的方式来获取团队的所有成员?

python django recursion list-comprehension django-orm

6
推荐指数
2
解决办法
3556
查看次数

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

我有一个用户模型类定义如下:

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')
Run Code Online (Sandbox Code Playgroud)

我想检索 CustomUser 的所有 line_managers。 假设我有:

A
-B 
 -C
Run Code Online (Sandbox Code Playgroud)

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

python django

3
推荐指数
1
解决办法
1951
查看次数