Визуализация внешних ключей в шаблонах, сгруппированных по происхождению - PullRequest
0 голосов
/ 17 июня 2011

У меня есть модель Area, и у меня есть модель Service.Область - это Иностранный ключ Службы.

Мне нужен шаблон, который показывает каждую Службу, сгруппированную под соответствующей ей областью, то есть

Area 1

- service a

- service b

Area 2

- etc.

Я передал список объектов всех служб на service_list.html.У меня есть пользовательский тег get_areas, который возвращает области, на которых я могу создать подразделения Area, и из которых я могу потенциально передать имя области в сервисный фильтр.Но так как я не могу фильтровать (могу ли я?) В {% for service in object_list %}, как я могу отфильтровать список сервисов в разделе HTML в каждой области?

Заранее большое спасибо.

Ответы [ 3 ]

1 голос
/ 17 июня 2011

Если вы публикуете свои модели, я могу дать вам точный код, но в целом что-то вроде этого должно работать:

# Pass in 'areas' variable from view with all required areas

{% for  area in areas %}
    {{ area.name }}
    {% for service in area.service_set.all %} #Gets all the services associated with an area
        {{ service.name }}
    {% endfor %}

{% endofor %}

Не уверен, что вам даже нужен собственный тег, но, может быть, я просто не понимаю эту часть.

0 голосов
/ 18 июня 2011

@ Маз - спасибо тебе за это.Я учусь на данный момент и нужно посмотреть на service_set.

@ arustgi - это сработало отлично.Для удобства новичков, спотыкающихся об этом, я передаю 'queryset': Service.objects.all() и использую:

    {% regroup object_list by area as area_list %}
    {% for area in area_list %}
        <h2 class="separate">{{ area.grouper }}</h2>
        {% for service in area.list %}
        <div class="column">
            <h3>{{ service.title }}</h3>
            {{ service.body }}
        </div>
        {% endfor %}
    {% endfor %}

Краткий, описательный код.Большое спасибо вам обоим

0 голосов
/ 17 июня 2011

Посмотрите на тег шаблона перегруппировки. Он был построен с той же целью https://docs.djangoproject.com/en/1.3/ref/templates/builtins/#regroup

Одна вещь, которую я осознал, состоит в том, что, как только вы получаете представление о сложных взаимосвязанных данных в ваших шаблонах, имеет смысл преобразовать данные в соответствующий объект (обычно список словарей), прежде чем передавать их в шаблон. .

Таким образом, вы можете легче проверять свою информацию, и вам намного легче ее отображать. (В вашем распоряжении будут гораздо более мощные инструменты в представлениях на основе Python, чем в языке шаблонов Django).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...