Как реализовать фильтрацию?

В простом примере ниже, в файле "city_list.html" необходимо сделать вывод городов для своих стран. Кто знает, как это осуществить, помогите, пожалуйста!
models.py
class Country(models.Model):
	name = models.CharField(max_length=50)
	country_slug = models.SlugField(max_length=50, unique=True)

	def __str__(self):
		return self.name

	def get_absolute_url(self):
		return reverse('country', kwargs={'country_slug': self.country_slug})

class City(models.Model):
	city_country = models.ForeignKey(Country)
	name = models.CharField(max_length=50)
	city_slug = models.SlugField(max_length=50, unique=True)

	def __str__(self):
		return self.name

urls.py
urlpatterns = [
    url(r'^admin/', include(admin.site.urls)),
    url(r'^$', 'example.views.home'),
    url(r'^(?P<country_slug>[-\w]+)$', CityListView.as_view(), name='country'),
]

views.py
def home(request):
	return render_to_response("home.html", {'countries': Country.objects.all()})


class CityListView(ListView):
	model = City
	context_object_name = "cities"
	template_name = "city_list.html"

home.html
{% for country in countries %}
<li><a href="{{ country.get_absolute_url }}">{{ country.name }}</a></li>
	{% endfor %}
  • Вопрос задан
  • 160 просмотров
Решения вопроса 1
winordie
@winordie
Лучшая документация -- исходники
class CityListView(ListView):
    model = City
    context_object_name = "cities"
    template_name = "city_list.html"

    def get_queryset(self, *args, **kwargs):
        qs = super(CityListView, self).get_queryset(*args, **kwargs)

        country = Country.objects.get(country_slug=self.kwargs.get('country_slug'))
        return qs.filter(city_country=country)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы