Доступ ко многим многим отношениям в Джанго - PullRequest
2 голосов
/ 14 мая 2011

Я настроил несколько моделей следующим образом:

Страница

Галерея

Изображение

Галерея и изображение разделяют отношения многие ко многим.

Страница может иметь 1 или 0 галерей.

Я создал галерею с несколькими изображениями и прикрепил ее к объекту страницы.

Однако у меня возникли проблемыотображение его в шаблоне.

Может ли кто-нибудь помочь?

Моя страница выглядит так:

def detail(request, page_id):
p = get_object_or_404(Page, pk=page_id)
return render_to_response('page/detail.html', {'page': p},
                      context_instance=RequestContext(request))

И шаблон:

{% block images %}
{% if page.gallery %}
{% for image in page.gallery.image_set.all %}
<a rel="gallery" href="{{ STATIC_URL }}{{ image.image }}"></a>
{% endfor %}
{% endif %}
{% endblock %}`

Если я попытаюсь вывести некоторый текст в блоке IF, он получится в порядке, но не в цикле.

Любой совет, как заставить его работать / как обычно приводить это в порядок, был бы очень признателен.

Спасибо.

Ответы [ 2 ]

5 голосов
/ 14 мая 2011

Если отношение Gallery-Image много ко многим, я предполагаю, что у вас есть поле m2m в вашей модели Gallery, где m2m manager - это само поле. Менеджер может быть запрошен, как и любой другой QuerySet: model_instance.mym2mfield.filter().

Если ваш ManyToManyField называется images на модели Gallery, ваш шаблон будет выглядеть так:

{% for image in page.gallery.images.all %}
    <a rel="gallery" href="{{ STATIC_URL }}{{ image.image }}"></a>
{% endfor %}

Если ваш ManyToManyField соответствует модели Image, имя по умолчанию будет таким, как вы описали, если только вы не указали related_name, в этом случае вы будете использовать это имя.

{% for image in page.gallery.image_set.all %}
1 голос
/ 14 мая 2011

Ваша проблема может заключаться в способе доступа к галерее со страницы.В своем шаблоне попробуйте что-то вроде следующего и посмотрите, есть ли у вас какие-либо выходные данные:

{{ page.gallery }}

В некоторых случаях некоторые ошибки могут игнорироваться в шаблоне.

Также янемного любопытно, как связаны ваша страница и галерея?Есть ли у модели Page OneToOneField с названием «галерея»?Есть ли у галереи ForeignKey to Page?В последнем случае вы получите доступ к галереям, связанным со страницей:

{{ page.gallery_set.all }}

Было бы проще ответить на этот вопрос, если бы вы предоставили дополнительную информацию о полях в ваших моделях.

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