如何获得某些国家/地区的城市清单?

时间:2019-02-13 11:48:48

标签: python mysql django

我正在尝试显示某些国家{{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>

1 个答案:

答案 0 :(得分:1)

您可以使用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>