Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Django
  • » Вложенные for для передачи параметров [RSS Feed]

#1 Авг. 7, 2013 16:18:14

gvasily86
Зарегистрирован: 2013-08-07
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

Вложенные for для передачи параметров

Есть две таблицы например
Машины и Города
структура Машины 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 %}	

Офлайн

#2 Авг. 7, 2013 16:38:01

inoks
От: Russia
Зарегистрирован: 2012-12-11
Сообщения: 343
Репутация: +  35  -
Профиль   Адрес электронной почты  

Вложенные for для передачи параметров

{% if citys %}
	<ul>
	{% for city in citys %}
		<li>{{city.name}}</li>
              {% for car in city.car_set.all %}
                   {{car}}
              {% endfor %}
	{% endfor %}
	</ul>
{% endif %}	

Офлайн

#3 Авг. 8, 2013 09:07:29

gvasily86
Зарегистрирован: 2013-08-07
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

Вложенные for для передачи параметров

Код почему то не заработал, но начал капать в эту сторону

{% 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 (Авг. 8, 2013 12:26:47)

Офлайн

#4 Авг. 8, 2013 09:10:06

gvasily86
Зарегистрирован: 2013-08-07
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

Вложенные for для передачи параметров

А ещё не подскажете насколько это правильно на каждого посетителя так дёргать базу? А если там порядка 1000 записей, нагрузка будет жёсткая?

Офлайн

#5 Авг. 8, 2013 09:12:09

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Вложенные for для передачи параметров

Установи debag-toolbar, там можно посмотреть количество запросов к базе



Офлайн

#6 Авг. 8, 2013 16:14:19

inoks
От: Russia
Зарегистрирован: 2012-12-11
Сообщения: 343
Репутация: +  35  -
Профиль   Адрес электронной почты  

Вложенные for для передачи параметров

gvasily86
А ещё не подскажете насколько это правильно на каждого посетителя так дёргать базу? А если там порядка 1000 записей, нагрузка будет жёсткая?
если данные для каждого посетителя меняются - то правильно, если нет, то нужно кэшировать.

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

https://docs.djangoproject.com/en/dev/topics/cache/#template-fragment-caching

Офлайн

#7 Авг. 9, 2013 00:06:42

nnmware
Зарегистрирован: 2012-07-21
Сообщения: 133
Репутация: +  13  -
Профиль   Отправить e-mail  

Вложенные for для передачи параметров

Car.objects.order_by('city') и regroup
в шаблоне спасут отца русской демократии.

Офлайн

#8 Авг. 9, 2013 08:10:15

gvasily86
Зарегистрирован: 2013-08-07
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

Вложенные for для передачи параметров

Спасибо, как раз изучаю мануалы

Офлайн

  • Начало
  • » Django
  • » Вложенные for для передачи параметров[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version