我真的需要帮助......我一直在寻求帮助,并且在google上找了一眼我没找到任何东西......
我希望当我点击表名时,我想获取ID和号码,并获取有关该表的详细信息。
table_base.html
{% extends 'base.html' %}
{% block content %}
<br>
<div class="container">
<div class="jumbotron">
<h1> {{ table_name }} List</h1>
{% if list_tables %}
<table>
<thead>
<th>Id</th>
<th>Name</th>
<th>Date</th>
</thead>
{% for list in list_tables %}
<tr>
<td><pre>{{ list.id }}</pre></td>
<td><pre><a class="btn-link" href="{% url 'tables:details' list.id %}">{{ list.name }}</a></pre></td>
<td> <pre>{{ list.date }}</pre></td>
</tr>
{% endfor %}
</table>
{% else %}
<p> No Records Found</p>
{% endif %}
</div>
</div>
{% endblock %}
views.py
def table_base(request):
table_name = Crawledtables._meta.db_table
list_tables = Crawledtables.objects.order_by('id')
return render(request, 'tables/table_base.html', {'table_name': table_name,
'list_tables': list_tables})
class AboutDetail(DetailView):
model = Crawledtables
pk_url_kwarg = 'table_id'
template_name = 'tables/table_list.html'
def __init__(self, **kwargs):
super(AboutDetail, self).__init__(**kwargs)
def get_object(self):
if 'table_id' not in self.kwargs:
return Crawledtables.objects.get(id=1)
else:
return Crawledtables.objects.get(id=self.kwargs['table_id'])
class Details(ListView):
model = AllTables
template_name = 'tables/table_list.html'
context_object_name = 'details'
paginate_by = 15
queryset = AllTables.objects.all()
表/ urls.py
urlpatterns = [
url(r'^$', views.table_base, name='tables'),
url(r'^(?P<table_id>\d+)$', views.AboutDetail.as_view(), name='id-details'),
url(r'^(?P<table_id>\d+)/details$', views.Details.as_view(), name='details'),]
基本上我想得到table_id的值并在视图中创建一个新函数,我根据table_id得到表信息... 如果我有table_id 2我想要table_name2的数据... 如果我有table_id 3我想要table_name3的数据...等等。 我希望这些数据在我将创建的新模板上列出。
对于views.py:
这样的东西我将得到table_id = 2然后我使用table_id来获取具有该id的表名。当我得到表名时,我会将它放在db_table中的models.py中以获取特定的表详细信息。
def details(request, table_id):
tbl_name = Crawledtables.objects.get(id=table_id)
AllTables._meta.db_table = tbl_name
query = AllTables.objects.order_by('id')
tbl_query = {'t_details': query}
return render(request, 'tables/table_list.html', context=tbl_query)
提前谢谢
更新:
我几乎把它搞清楚了......但是我还有一件事情。
views.py
class Details(ListView):
AllTables._meta.db_table = 'table_name_1'
# AllTables._meta.db_table = 'table_name_2'
# AllTables._meta.db_table = 'table_name_3'
model = AllTables
template_name = 'tables/table_list.html'
context_object_name = 'details'
paginate_by = 15
queryset = AllTables.objects.all()
我需要根据我得到的table_id在这3个表之间切换 views.AboutDetail或table_base.html,当用户点击table_name
时这样的事情:
class Details(ListView):
if AboutDetail.pk_url_kwarg == 1:
AllTables._meta.db_table = 'table_name_1'
if AboutDetail.pk_url_kwarg == 2:
AllTables._meta.db_table = 'table_name_2'
if AboutDetail.pk_url_kwarg == 3:
AllTables._meta.db_table = 'table_name_3'
else:
pass