gpt4 book ai didi

python - Parent/Child(ren) Hierarchy/"Nested Sets", 在 Python/Django 中

转载 作者:行者123 更新时间:2023-11-28 17:54:22 24 4
gpt4 key购买 nike

我使用的是 Django/Python,但这里绝对可以接受伪代码。

使用一些已经存在的模型,我有 Employee,每个都有一个 Supervisor,这本质上是与另一个 Employee< 的外键类型关系

员工/主管层次结构是这样的:

任何给定的员工都有一名主管。该主管可能在“下属”有一名或多名员工,并且也有他/她自己的主管。检索我的“上线”应该返回我的主管、他的主管、她的主管等,直到找到没有主管的员工。

无需疯狂安装新应用程序来管理这些关系,因为这是一个现有的代码库和项目,我想知道实现以下功能的“pythonic”或正确方法:

def get_upline(employee): 
# Get a flat list of Employee objects that are
# 'supervisors' to eachother, starting with
# the given Employee.
pass


def get_downline(employee):
# Starting with the given Employee, find and
# return a flat list of all other Employees
# that are "below".
pass

我觉得使用 Django ORM 可能有一种简单的方法来执行此操作,但如果没有,我会采纳任何建议。

我还没有彻底检查过 Django-MPTT,但如果我能保持模型完好无损,并且只是获得更多功能,那将是值得的。

最佳答案

您无需修改​​模型即可使用 django-mptt;你只需要在你的模型上创建一个 parent 字段,当你注册你的模型时,django-mptt 会自动为 mptt 创建所有其他属性:mptt.register(MyModel) .

不过,如果您只需要“上线”层次结构,则不需要嵌套集。更大的性能问题是走向相反的方向并收集例如。 children/leaves 等,这使得有必要在嵌套集合模型上工作!

关于python - Parent/Child(ren) Hierarchy/"Nested Sets", 在 Python/Django 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3143898/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com