Как передать данные пост-запроса в отдельное представление? (Джанго) - PullRequest
0 голосов
/ 24 января 2019

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

class GenreSearch(generic.ListView):
    template_name = 'games/genresearch.html'
    context_object_name = 'genre_list'

    def get_queryset(self):
        return Genre.objects.order_by("name")

Это шаблон:

{% if genre_list %}

<div class="btn-group">
  <button class="btn btn-secondary btn-lg dropdown-toggle" type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Select Genre</button>
  <div class="dropdown-menu scrollable-menu">
      {% for genre in genre_list %}
        <a class="dropdown-item" href="#">{{ genre.name }}</a>
      {% endfor %}
  </div>
</div>

{% endif %}

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

class GamesPageByGenre(generic.ListView):
    template_name = 'games/allgames.html'
    context_object_name = 'game_list'

    def get_queryset(self):
        #Return games whose genres include the genre id x
        return Game.objects.filter(genres__id=10)

Так, если жанр 'действия' был выбран из выпадающего списка, отправьте его, получите идентификатор для действия жанра, а затем замените genres__id=10 с genres__id=genreID

1 Ответ

0 голосов
/ 24 января 2019

Передайте URL в раскрывающемся списке:

<a class="dropdown-item" href="/gamespagebygenre/?genre={{ genre.id }}">{{ genre.name }}</a>

А в представлении сделай так:

def get_queryset(self):

    genre_id = self.request.GET.get("genre")
    return Game.objects.filter(genres__id=int(genre_id))
...