【发布时间】:2020-11-15 20:22:36
【问题描述】:
我有这个模型:
Department(models.Model):
title = models.CharField(max_length=128)
reference = models.ForeignKey('self', related_name='reference')
如您所见,此模型的每个对象都可以有父对象,反之亦然。
例如,这些是部门的对象:
id = 1 , title = 'dep 1' , reference_id = Null
id = 2 , title = 'dep 2' , reference_id = 1
id = 3 , title = 'dep 3' , reference_id = Null
id = 4 , title = 'dep 4' , reference_id = 1
id = 5 , title = 'dep 5' , reference_id = 3
id = 6 , tiltl = 'dep 6' , reference_id = 3
id = 7 , title = 'dep 7' , reference_id = 3
id = 8 , title = 'dep 8' , reference_id = 9
id = 9 , title = 'dep 9' , reference_id = Null
id = 10, title = 'dep 10', reference_id = 9
现在我想获取具有此条件的对象列表:Each parent by its children。像这样:
- dep 1
dep 2
dep 4
- dep 3
dep 5
dep 6
dep 7
- dep 9
dep 8
dep 10
我该怎么做? (我可以只用Django ORM 创建这个列表吗?)
更新 这是我的部门级别:
Department_Level = (
(1, 'headquarters'),
(2, 'unit'),
(3, 'center'),
)
level = models.IntegerField(choices=Department_Level,default=.Department_Level[2][0])
我只想要列表中的第 2 级和第 3 级。
【问题讨论】:
-
我假设层次结构可以永远存在?因为一个部门可以属于另一个部门。
-
最好看看像
django-mptt这样实现树结构实用程序的包。 -
层次结构有 3 个级别。 @WillemVanOnsem
-
我不能在我的项目中使用这个包。 (公司政策)@WillemVanOnsem
-
您希望如何返回您的数据?
标签: python django model django-2.0