Форум сайта python.su
Добрый день
На данный момент есть такой код
#show.html {% for showtime in showtimes %} <div class="row"> <div class="medium-11 medium-centered columns"> <div class="panel callout radius"> Кинотеатр: {{ showtime.showtime_place }}<br> Дата: {{ showtime.showtime_dates }}<br> Время: {{ showtime.showtime_times }}<br> Формат: {{ showtime.showtime_format }}<br> </div> </div> </div> {% endfor %}
#models.py class Showtime(models.Model): showtime_dates = models.CharField('Date', max_length=30) showtime_times = models.CharField('Time', max_length=30) showtime_format = models.CharField('Format', max_length=4, blank=True) showtime_place = models.ForeignKey('app_places.place', verbose_name='Place') showtime_show = models.ForeignKey(Show, verbose_name='Show name')
#views.py def show(request, show_id=1): return render_to_response('app_shows_and_times/show.html', {'show': Show.objects.get(id=show_id), 'showtimes': Showtime.objects.filter(showtime_show_id=show_id)})
{% regroup showtimes by showtime.showtime_place as cinema_place %} <ul> {% for showtime.showtime_place in cinema_place %} <li> {{ showtime.showtime_place.grouper }} <ul> {% for item in showtime.showtime_place.list %} <li> {{ item.showtime.showtime_dates }}: {{ item.showtime.showtime_times }} </li> {% endfor %} </ul> </li> {% endfor %} </ul>
Отредактировано TitanFighter (Сен. 6, 2015 22:59:09)
Офлайн
Почему не пробовали стандартные методы QuerySet https://docs.djangoproject.com/en/1.8/ref/models/querysets/#order-by ?
Или пробовали и не получилось?
Офлайн
Не думал я в контексте данной задачи про QuerySet (небольшой еще опыт работы с ним). После вашего сообщения перечитал еще раз весь раздел про QuerySet, особенно про order_by - честно, не понял, как его применить к моей задаче. Ордер ведь сортирует, а мне нужно сгруппировать.
Т.е. было вот так (Скажем на примере сеансов Трансформеры 5 в 2х разных кинотеатрах):
Кинотеатр Линия Кино
Дата 1.1.15
Время 10:00
Кинотеатр Линия Кино (тот же самый кинотеатр)
Дата 1.1.15 (та же самая дата)
Время 12:30
Кинотеатр Караван
Дата 1.1.15
Время 10:00
Кинотеатр Караван (кинотеатр такой же, как и предыдущий)
Дата 1.1.15 (та же самая дата)
Время 13:00
Кинотеатр Караван (кинотеатр такой же, как и предыдущий)
Дата 5.1.15 (!новая дата)
Время 13:00
Кинотеатр Линия Кино
>Дата 1.1.15
-> 10:00
-> 12:30
Кинотеатр Караван
> Дата 1.1.15
-> 10:00
-> 13:00
> Дата 5.1.15
-> 13:00
{% regroup showtimes by showtime_place as cinema_places %} <ul> {% for cinema in cinema_places %} <li> {{ cinema.grouper }} <ul> {% regroup cinema.list by showtime_dates as cinema_dates %} {% for date in cinema_dates %} <li> {{ date.grouper }} <ul> {% for time in date.list %} <li> {{ time.showtime_times }} </li> {% endfor %} </ul> </li> {% endfor %} </ul> </li> {% endfor %} </ul>
Отредактировано TitanFighter (Сен. 4, 2015 01:44:32)
Офлайн
Прошу еще чуть помощи.
{% regroup showtimes by showtime_place as cinema_places %} <ul> {% for cinema in cinema_places %} <li> # Из {{ cinema.grouper }} я хочу сделать ссылку, # но {{ showtime_place_id}} я могу получить только из цикла ниже {% for time in date.list %}, # так как в data.list находятся данные всех полей, если я правильно понимаю <a href="cinema/{{ showtime_place_id}}">{{ cinema.grouper }}</a> <ul> {% regroup cinema.list by showtime_dates as cinema_dates %} {% for date in cinema_dates %} <li> {{ date.grouper }} <ul> {% for time in date.list %} <li> {{ time.showtime_times }} </li> {% endfor %} </ul> </li> {% endfor %} </ul> </li> {% endfor %} </ul>
Отредактировано TitanFighter (Сен. 4, 2015 18:10:10)
Офлайн
Достаточно было в модель, отвечающую за инфо по кинотеатрам, засунуть
def get_absolute_url(self): from django.core.urlresolvers import reverse return reverse('app_places.views.cinema', args=[str(self.id)])
Отредактировано TitanFighter (Сен. 6, 2015 22:58:26)
Офлайн