在Django 1.11中构建嵌套URL时遇到的问题

时间:2018-06-24 18:57:37

标签: python django

我正在尝试创建一个层次结构,在该层次结构中,主页用户可以选择在其主页中选择“位置”,然后一旦他们选择了位置,便从该位置获得了“各自的经理”,接下来,他们又选择了获得各自关联的经理。

图->(主页)所有位置-在选择特定的位置->经理-在选择特定的经理->关联人员列表(与经理对齐)

网址模式:

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})

经理HTML

<a class="list-group-item list-group-item-action"><h5 class = "text-monospace">{{ all_managers.direct_manager }}</h5></a>

关联HTML

<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)

1 个答案:

答案 0 :(得分:1)

您的direct_manager字段需要是一种关系,而不是文本字段。这是一种递归关系,其中层次结构的一个实例指向另一个实例,即它的管理者。所以:

direct_manager = models.ForeignKey('self', related_name='direct_reports')

现在,在给定Hierarchy实例即管理者的情况下,您可以通过反向关系获取所有同伴:

associates = my_manager.direct_reports.all()