我正在尝试创建一个层次结构,在该层次结构中,主页用户可以选择在其主页中选择“位置”,然后一旦他们选择了位置,便从该位置获得了“各自的经理”,接下来,他们又选择了获得各自关联的经理。
图->(主页)所有位置-在选择特定的位置->经理-在选择特定的经理->关联人员列表(与经理对齐)
网址模式:
urlpatterns = [
url(r'^$', views.index, name='index'),
url(r'^(?P<hierarchy_id>[0-9]+)/$', views.managerview, name='managerview'),
url(r'(?P<associate_id>[0-9]+)/$', views.associatelist, name='associatelist'),
]
观看次数:
def index(request):
all_sites = Hierarchy.objects.all()
return render(request, "adash/index.html", {'all_sites': all_sites})
def managerview(request, hierarchy_id):
all_managers = Hierarchy.objects.get(pk=hierarchy_id)
return render(request, "adash/manager.html", {'all_managers': all_managers})
def associatelist(request, associate_id):
all_logins = Hierarchy.objects.get(pk=associate_id)
return render(request, "adash/associatelist.html", {'all_logins': all_logins})
<a class="list-group-item list-group-item-action"><h5 class = "text-monospace">{{ all_managers.direct_manager }}</h5></a>
<a class="list-group-item list-group-item-action"><h5 class = "text-monospace">{{ all_logins.login }}</h5></a>
当前能够单击位置并将其定向到与该站点关联的各个管理员,但是如何进行下一步,即单击管理员并显示关联者列表。
下面是我的模特:
class Hierarchy(models.Model):
site = models.CharField(max_length=250)
direct_manager = models.CharField(max_length=250)
login = models.CharField(max_length=250)
答案 0 :(得分:1)
您的direct_manager
字段需要是一种关系,而不是文本字段。这是一种递归关系,其中层次结构的一个实例指向另一个实例,即它的管理者。所以:
direct_manager = models.ForeignKey('self', related_name='direct_reports')
现在,在给定Hierarchy实例即管理者的情况下,您可以通过反向关系获取所有同伴:
associates = my_manager.direct_reports.all()