【发布时间】:2019-03-22 12:04:48
【问题描述】:
我有国家、省、市的三种模型。其中一个 URL 包括帖子应该去的城市名称。我可以通过 URL 获得城市的名称。在视图功能中,我可以找到城市名称,然后我可以找到该城市所属的国家。现在,我想列出这个国家下的所有城市。我的问题是,在城市和国家之间没有直接关系的情况下,我该如何做到这一点。城市与省有关,省与国家有关。我想要的列表应该包括该国境内的所有城市,无论哪个省。我怎样才能做到这一点?除了在城市和乡村模型之间建立直接关系之外,还有什么可能的解决方案?
注意:我可以通过变量 post_city 获取国家 ID。所选城市的国家 ID 为 3。因此,我想要 ID 为 3 的国家下的所有城市。
示例:通过 URL:我将 post_city 变量设置为 Los Angeles。因此,无论加利福尼亚州如何,我都想要美国的所有城市。另一个例子,如果 post_city 变量是伦敦,那么,我想要英国的所有城市,而不考虑省份。
我拥有的模型如下:
class Country(models.Model):
country_name = models.CharField(max_length=64, unique=True)
def __str__(self):
return "%s" % (self.country_name)
class Province(models.Model):
country_id = models.ForeignKey(Country, on_delete=models.CASCADE)
province_name = models.CharField(max_length=64)
def __str__(self):
return "%s" % (self.province_name)
class City(models.Model):
province_name = models.ForeignKey(Province, on_delete=models.CASCADE)
city_name = models.CharField(max_length=64)
def Country(self):
return self.province_name.country_id.country_name
查看功能如下:
def list_page(request, post_city):
p_c = City.objects.filter(city_name__iexact=post_city).get()
p_p = p_c.province_name
p_country = p_p.country_id
pp=City.objects.all()
print(pp)
context = {
'post_city' : post_city,
'all_p_cities': all_p_cities,
}
return render(request, 'path/to/list_page.html', context )
【问题讨论】:
标签: django