python - 在 Django 1.11 中构建嵌套 URL 时面临的问题
问题描述
我正在尝试创建一个层次结构,在主页用户可以选择在其主页中选择位置,然后一旦他们选择了位置,他们就会从该位置获得相应的经理,然后一旦他们选择了他们获得相应员工的经理。
图表->(主页)所有位置-选择特定位置->经理-选择特定经理->员工列表(与经理对齐)
网址模式:
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)
解决方案
您的direct_manager
字段必须是关系,而不是文本字段。这是一种递归关系,其中 Hierarchy 的一个实例指向另一个作为其管理器的实例。所以:
direct_manager = models.ForeignKey('self', related_name='direct_reports')
现在,给定一个作为经理的 Hierarchy 实例,您可以通过反向关系获取所有员工:
associates = my_manager.direct_reports.all()
推荐阅读
- java - 为什么在迁移到 Java 11 后,标题“Accept: application/xml”在 Spring Boot 中不起作用?
- apache-kafka - Debezium 能否确保同一交易中的所有事件同时发布?
- cucumber - 如何从 cypress gherkin 设置中的场景大纲中获取场景名称?
- compiler-construction - LLVM 如何进行活性分析?
- javascript - 创建大小为 100% 的容器宽度的未知大小图像行
- c - 为什么我的 C mpi 程序中没有字符串?
- java - 您如何处理 JLabel 类?它说,“JLabel 不是一个声明”的错误
- azure - Azure Blob 存储 Spark
- javascript - Sweet Alert 2,自定义按钮
- ffmpeg - 带有缩略图块的 FFMPEG Dash