我不太了解Django中的观点。我的网站将有一张桌子上有不同的工作或负荷。这称为负载板。这引用了一个名为Loadboard_table的数据库表。 Loadboard_table包含数据库中Company_table的外键。此数据库表包含分配了此作业/负载的公司以及公司的其他信息。
目标是让用户点击装载板上的任何一行,这会将用户带到公司的“详细信息”页面。我在下面的代码中展示了一个简洁的部分,以避免问题膨胀。
索引
上的表行项目<!-- this is where I grab my Company table foreign key by clicking on one of the loadboard items -->
<td>
<a href="{% url 'loadboard:detail' item.CompanyName_id %}"> {{item.CompanyName}}</a>
</td>
urls.py
urlpatterns = [
# /loadboard/
url(r'^$', views.IndexView.as_view(), name='index'),
# /loadboard/71/
#note this is where I am trying to pass the foreign key to
url(r'^(?P<pk>[0-9]+)/$', views.DetailView.as_view(), name='detail'),
]
views.py
from django.views import generic
from .models import Company_table, Loadboard_table
class IndexView(generic.ListView):
template_name = 'loadboard/index.html'
context_object_name = 'all_loadboard'
def get_queryset(self):
return Loadboard_table.objects.all()
class DetailView(generic.DetailView):
model = Company_table
template_name = 'loadboard/detail.html'
detail.html
<!-- I want this detail page to show the Company that the loadboard's foreign key references -->
<head>
<title>{% block title %}{{Company_table.CompanyName}}'s loadboard{% endblock %}</title>
</head>
非常感谢您的帮助!
答案 0 :(得分:0)
我找到了一种在不使用DetailView类的情况下达到目标的方法。我只是创建了一个处理HTTP请求的函数,并从url中获取了CompanyId。我认为DetailsView类用于更具体的情况。
用户点击:
<td>
<a href="{% url 'loadboard:detail' item.CompanyName_id %}">{{item.CompanyName}}</a>
</td>
然后它在urls.py上触发此URL模式:
url(r'^([0-9]+)/$', views.ViewCompanyDetails, name='detail')
使用views.py上的函数:
def ViewCompanyDetails(request, CompanyId):
CompanyObject = Company_table.objects.get(id = CompanyId)
context = {'Company': CompanyObject}
return render(request, 'loadboard/detail.html', context)
这实现了我的目标,即尝试从用户点击表格的地方传递公司ID,并将其一直传递到视图页面并获取该HTML页面。
我可能对通用模型中的DetailsView类错了,它对主键太具体了,但有人可以纠正我。