python - 如何获取某些国家/地区的城市列表?
问题描述
我正在尝试显示某些国家/地区的城市名称{{city}}
。例如,如果我单击“美国”,它应该会显示我数据库中的城市列表。
但我不知道如何正确过滤它。
我试过这个,但没有出现。
Post.objects.filter(country='country').filter(city='city')
这是我的模型
class Post(models.Model):
title = models.CharField(max_length=255)
country = models.CharField(max_length=255)
city = models.CharField(max_length=255)
address = models.CharField(max_length=255)
email = models.EmailField(max_length=255)
phone = models.CharField(max_length=255)
website = models.CharField(max_length=255)
date_posted = models.DateTimeField(default=timezone.now)
author = models.ForeignKey(User, on_delete=models.CASCADE)
def __str__(self):
return self.title
def get_absolute_url(self):
return reverse('users:blog')
这是我的看法
def cities(request):
context = {
'posts': Post.objects.filter(country='country').filter(city='city')
}
return render(request, 'users/cities.html', context)
这是我的模板:
{% for post in posts %}
<table class="table table-hover text-left col-sm-6" style="table-layout: fixed; word-wrap: break-word;">
<tbody>
<tr>
<td>{{ post.id }}</td>
<td>{{ post.city }}</td>
</tr>
</tbody>
</table>
{% endfor %}
{% endblock %}
</div>
解决方案
您可以使用values_list
和调用distinct()
从Post
模型中获取城市名称:
意见
def cities(request):
queryset = Post.objects.filter(country='country').values_list(
'city', flat=True).distinct().order_by('city')
return render(request, 'users/cities.html', {'cities': queryset})
模板
<table>
<tbody>
{% for city in cities %}
<tr>
<td>{{ city }}</td>
</tr>
{% endfor %}
</tbody>
</table>
推荐阅读
- excel - 如何以文本格式从 Excel 文件导出到 csv 文件,该文件具有前导零?
- typescript - 未知联合类型的 switch 的默认子句时打字稿错误
- c# - 在 HttpClientHandler 中设置成员会导致“此实例已启动一个或多个请求”错误
- postgresql - 目标是通过 custmer_id 显示最近的交易
- php - 浏览器中未设置响应标头 cookie
- python - 如何在 Mac 或 Linux 上安装 tensorflow 2.0?
- java - 空指针异常仅在运行 jar 文件时发生 - Scala Spark
- html - 如何配置 CentOS-vServer 以支持在端口 8080 上运行 Spring Boot 的域名上的 REST 调用
- mysql - 您如何检查并检查组是否包含 2 个或更多给定值?
- linux - 监听端口并将 https 解密到标准输出