Найти - Пользователи
Полная версия: Вложенные for для передачи параметров
Начало » Django » Вложенные for для передачи параметров
1
gvasily86
Есть две таблицы например
Машины и Города
структура Машины id, car, id_city
структура Города id_city, name

как в шаблоне сделать выгрузку Город - Машины???
получить значения могу
citys = City.objects.all()
cars = Car.objects.all()

в шаблоне вывести на экран последовательно могу
{% if citys %}
	<ul>
	{% for city in citys %}
		<li>{{city.name}}</li>
                 //Здесь хочу сделать подобие
                 //если есть машины в этом городе, вывести их сюда 
                 //как передать параметр в {% for %}
	{% endfor %}
	</ul>
{% endif %}	
inoks
{% if citys %}
	<ul>
	{% for city in citys %}
		<li>{{city.name}}</li>
              {% for car in city.car_set.all %}
                   {{car}}
              {% endfor %}
	{% endfor %}
	</ul>
{% endif %}	
gvasily86
Код почему то не заработал, но начал капать в эту сторону
{% for car in city.car_set.all %}
нашёл следующее решение:
в классе City добавляем
def get_cities(self):
        return Cars.objects.filter(id_city=self)
В шаблоне
{% if citys %}
	<ul>
	{% for city in citys %}
		<li>{{city.name}}</li>
              {% for car in city.get_cities%}
                   {{car.car}}
              {% endfor %}
	{% endfor %}
	</ul>
{% endif %}
gvasily86
А ещё не подскажете насколько это правильно на каждого посетителя так дёргать базу? А если там порядка 1000 записей, нагрузка будет жёсткая?
FishHook
Установи debag-toolbar, там можно посмотреть количество запросов к базе
inoks
gvasily86
А ещё не подскажете насколько это правильно на каждого посетителя так дёргать базу? А если там порядка 1000 записей, нагрузка будет жёсткая?
если данные для каждого посетителя меняются - то правильно, если нет, то нужно кэшировать.

{% load cache %}
{% cache 500 sidebar %}
    .. sidebar ..
{% endcache %}

https://docs.djangoproject.com/en/dev/topics/cache/#template-fragment-caching
nnmware
Car.objects.order_by('city') и regroup
в шаблоне спасут отца русской демократии.
gvasily86
Спасибо, как раз изучаю мануалы
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB