我写了一个模型来存储数据。这样地。在
class Country(models.Model):
Countryname = models.CharField(max_length=200)
def __unicode__(self):
return self.Countryname
class CountryDiseases(models.Model):
country = models.ForeignKey(Country,on_delete=models.CASCADE)
pmid = models.CharField(default= 'No Data',max_length=254)
serogroup = models.CharField(default= 'No Data', max_length=254)
serotype = models.CharField(default= 'No Data', max_length=254)
biotype = models.CharField(default= 'No Data',max_length=254)
collection_year = models.CharField(default= 'No Data',max_length=254)
NoOfStrains = models.CharField(default= 'No Data', max_length=254)
def __unicode__(self):
return self.NoOfStrains
呈现数据的url如下所示:
^{pr2}$简而言之,我有一个模板,其中包含一个带有超链接的国家列表, 当有人点击某个国家时,它应该产生一个列表,列出与特定国家相关的所有数据,比如给定的网址
http://127.0.0.1:8000/DATAPLO/india
其中“India”关键字将传递到给定的视图中,view将通过filter方法提取所有对象:
C_Details = CountryDiseases.objects.filter(country__country=pk)
这样提取和呈现数据的视图:
def County_Details(request,pk):
C_Details = CountryDiseases.objects.filter(country__country=pk)
#C_Details = CountryDiseases.objects.filter(country='india')
return render(request, 'DATAPLO/Country_Details.html', {'C_Details': C_Details})
它生成的urld如下所示:
http://127.0.0.1:8000/DATAPLO/india
http://127.0.0.1:8000/DATAPLO/USA
http://127.0.0.1:8000/DATAPLO/canada
但数据尚未提取。在
我可能会更改参数的名称(在视图和网址.py)对于类似于}。在
country_name
,ascountry.pk
通常配置为返回与country.id
相同的值。为了惯例起见,我将把country上的name字段的名称改为name
,而不是{然后在您看来,您可以通过相关国家/地区模型上的
^{pr2}$name
字段查找CountryDiseases对象:或者,如果您希望首先查找国家/地区以及详细信息,因为您可能在国家/地区模型中存储了其他信息,则可以更改CountryDiseases查找以直接引用国家/地区对象:
PS如果资本化将成为一个问题,例如“印度”与“印度”,您可以使用查找:
.filter(country__name__iexact=country_name)
(在第一个代码示例中为)或.get(name__iexact=country_name)
(在第二个例子中,但是您还应该确保在保存对象时不会发生冲突,因为您正在进行.get()
查询)。在相关问题 更多 >
编程相关推荐