Python 如何使用Django通过链接呈现与一个条目关联的所有数据?

Python 如何使用Django通过链接呈现与一个条目关联的所有数据?,python,django,django-forms,django-templates,django-views,Python,Django,Django Forms,Django Templates,Django Views,我正在学习Django,并创建了一个应用程序“myapp”,具有不同的组件,如下所示: 模型如下所示: Model.py: from __future__ import unicode_literals from django.db import models class Country(models.Model): name = models.CharField(max_length=200) def __unicode__(self): return se

我正在学习Django,并创建了一个应用程序“myapp”,具有不同的组件,如下所示:

模型如下所示: Model.py:

from __future__ import unicode_literals
from django.db import models

class Country(models.Model):
    name = models.CharField(max_length=200)

    def __unicode__(self):
        return self.name


class CountryDetails(models.Model):
    country = models.ForeignKey(Country)
    T_attack = models.PositiveIntegerField(verbose_name="attack")
    year = models.CharField(max_length=254)
    Deaths = models.CharField(max_length=254)
    NEWS_ID = models.CharField(max_length=254, verbose_name="NEWS_ID")


    def __unicode__(self):
        return self.Deaths
视图如下所示: view.py:

from django.shortcuts import render, get_object_or_404
from .models import Country, CountryDetails 

def home(request):
    c_list = Country.objects.all()
    return render(request, 'myapp/home.html', {'c_list':c_list})

def details(request, pk):
    c_details =  get_object_or_404(CountryDetails, pk)
    return render(request, 'myapp/home.html', {'c_details':c_details})
URL如下所示: URL.py:

“myapp”的“Home.html”显示所有可用国家/地区的列表,如下所示:

INDIA 
PKISTAN
USA
CANADA
我希望,当我单击时,让我们假设在印度,它应该在第二个“html”页面上呈现所有可用的详细信息,比如“detailed.html”,与印度相关,如下所示:

name   T_attack   year  Deaths  News_ID
India    12       2006   12       NDTV
India    110      2009   1        DEAN
India    12       2023   120      NDNV
India    10       2012   12       DEAN
但是,当我执行代码时,它会显示如下错误:

ValueError at /myapp/1/
need more than 1 value to unpack
Request Method: GET
Request URL:    http://127.0.0.1:8000/myapp/1/
Django Version: 1.10
Exception Type: ValueError
Exception Value:    
need more than 1 value to unpack
Exception Location: /home/jai/Desktop/trytable/local/lib/python2.7/site-packages/django/db/models/sql/query.py in build_filter, line 1130
Python Executable:  /home/jai/Desktop/trytable/bin/python
Python Version: 2.7.6
Python Path:    
['/home/jai/Desktop/trytable/test_project',
 '/home/jai/Desktop/trytable/lib/python2.7',
 '/home/jai/Desktop/trytable/lib/python2.7/plat-i386-linux-gnu',
 '/home/jai/Desktop/trytable/lib/python2.7/lib-tk',
 '/home/jai/Desktop/trytable/lib/python2.7/lib-old',
 '/home/jai/Desktop/trytable/lib/python2.7/lib-dynload',
 '/usr/lib/python2.7',
 '/usr/lib/python2.7/plat-i386-linux-gnu',
 '/usr/lib/python2.7/lib-tk',
 '/home/jai/Desktop/trytable/local/lib/python2.7/site-packages',
 '/home/jai/Desktop/trytable/lib/python2.7/site-packages']
Server time:    Sat, 15 Jul 2017 16:03:33 +0000
请帮帮我。谢谢

c_details =  get_object_or_404(CountryDetails, pk) 
你应该把它换成

c_details = CountryDetails.objects.filter(country__pk=pk)
在您的URL中,您使用的是国家的
pk
,因此您需要筛选与国家相关的所有行。
过滤器
查询就是这样做的。 要在模板中显示详细信息,可以执行以下操作

{% for c in c_details %}

 <h1>{{ c.T_attack }}</h3></br>
 <!-- and so on for the other fields also. -->

{% endfor %}
{%forc-in-c\u-details%}
{{c.T_攻击}
{%endfor%}
使用
c_details
的模板代码在哪里?@AlexHall,我认为在列表中它应该返回一些要渲染的内容,所以我现在不能为此写任何东西,你能告诉我它看起来像bcz吗,因为我只在Django上工作了三天,现在我的大脑不允许我理解。我已经尝试并探索了互联网上的所有教程和帖子,我的一切都不起作用。Greatttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttt您可以使用
\uu
对外键类的属性进行筛选<代码>国家/地区是外键。它不能与任何东西一起使用。感谢您的解释和回答:)
c_details =  get_object_or_404(CountryDetails, pk) 
c_details = CountryDetails.objects.filter(country__pk=pk)
{% for c in c_details %}

 <h1>{{ c.T_attack }}</h3></br>
 <!-- and so on for the other fields also. -->

{% endfor %}