Разделение ManyToManyFields в шаблоне - PullRequest
1 голос
/ 13 октября 2009

После моего вопроса на текст ссылки Я бы хотел разделить элементы в шаблоне, используя такие категории, как Интерьер, Экстерьер, Механическая и т. Д.

Я пробую код ниже, но, видимо, он не дает мне то, что я хочу.

{% for feature in vehicle.features.all %}
    {% ifequal vehicle.features.type.type "Interior" %}
    <li>{{ feature }}</li>
    {% endifequal %}
{% endfor %}

Как мне это сделать?

Ответы [ 2 ]

1 голос
/ 13 октября 2009

Вы хотите:

{% for feature in vehicle.features.all %}
    {% ifequal feature.type.type "Interior" %}
        <li>{{ feature }}</li>
    {% endifequal %}
{% endfor %}

vehicle.features - это ManyToManyRelatedManager, который можно использовать для доступа к Feature объектам, но на самом деле он не несет отношений Feature.

РЕДАКТИРОВАТЬ: В ответ на комментарий ниже о том, как сделать это в представлении, вы можете легко сделать:

interior_features = vehicle.features.filter(type__type='Interior')

и передайте interior_features непосредственно в контекст шаблона. Это на самом деле имеет больше смысла в качестве метода для модели:

def get_interior_features(self):
    return self.features.filter(type__type='Interior')

Результат этого может быть отфильтрован, конечно, при необходимости.

options = vehicle.get_interior_features().filter(is_standard=False)

или что-то.

0 голосов
/ 13 октября 2009

Используйте тег перегруппировки Django: http://docs.djangoproject.com/en/dev/ref/templates/builtins/#regroup

Возможно, в конечном итоге будет выглядеть примерно так:

{% regroup vehicle.features.all by type as vehicle_features %}

{% for feature in vehicle_features %}
  {% ifequal feature "Interior" %}
     <li>{{feature}}</li>
  {% endifequal %}
{% endfor %}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...