Wagtail-In django, как получить атрибуты страницы из идентификатора страницы - PullRequest
0 голосов
/ 03 мая 2018

Я получаю идентификатор страницы трясогузки с URL

https://www.example.com/results?id=14&id=15

В views.py

def get_data(request, **kwargs):
    resources = request.GET.getlist('id')

как получить соответствующие атрибуты страницы с помощью идентификатора страницы?

В моделях.py

context['selected_resources'] = ??

чтобы я мог отобразить его в шаблоне следующим образом

In results.html

% for resource in selected_resources %}
 <p>{{resource.title}}</p>
 <p>{{resource.description}}</p>
{% endfor %}

1 Ответ

0 голосов
/ 03 мая 2018

Использование filter с поиском id__in :

resource_ids = request.GET.getlist('id')
context['selected_resources'] = ResourcePage.objects.filter(id__in=resource_ids)

Предполагается, что идентификаторы, которые вы передаете в URL, всегда относятся к одному и тому же типу страницы (ResourcePage в этом примере). Вероятно, это безопасное предположение - если есть смешанные типы страниц, вы не можете гарантировать, что у них всех есть поле description, поэтому вы не можете сделать ничего полезного в выводе. Но если вам действительно нужно иметь дело с несколькими различными типами страниц (для всех из них определен description), вы можете сделать это следующим образом (за счет некоторых дополнительных запросов к базе данных):

context['selected_resources'] = Page.objects.filter(id__in=resource_ids).specific()
...