Передайте QuerySet в Django url - PullRequest
       48

Передайте QuerySet в Django url

0 голосов
/ 07 августа 2020

Я хочу передать список в качестве параметра набора запросов в Django ListView. Я знаю, что вы можете сделать это, перезаписав метод get_queryset, но в идеале я бы хотел этого избежать. Причина в том, что я ссылаюсь на другое представление и у меня уже есть нужный мне набор запросов, поэтому я не хочу запускать один и тот же запрос дважды.

В настоящее время я связываюсь со своим представлением следующим образом:

<a href="{url 'lab_work:project_list_ongoing' %}?projects={{active}}">{{active|length}</a>

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

class ProjectListOngoing(ListView):
    template_name = "<name of my template>"
    model = Project
    context_object_name = "projects"
    paginate_by = 10
    
    def dispatch(self, request, *args, **kwargs):
        self.projects = request.GET.get('projects', [])
        return super().dispatch(request, *args, **kwargs)

    def get_queryset(self):
        return self.projects

Похоже, что это заполнение правильного набора запросов, однако по какой-то причине первичные ключи пусты.

В моем шаблоне есть следующее:

{% for project in projects %}
   <li><a href="{% url 'lab_work:project_detail' pk=project.pk %}"></a></li>
{% endfor %}

И я получаю следующую ошибку:

Reverse for 'project_detail' with keyword arguments '{'pk': ''}' not found. 1 pattern(s) tried: ['project/(?P<pk>\\d+)/$']

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