Система жанров в django
Я создаю жанровую систему на django на основе видео. Я столкнулся с проблемой, что когда я выбираю определенный жанр и нажимаю на кнопку найти, мне выбрасывается ссылка типа '/filter/?genre=2', но проблема в том, что найденные книги не отображаются, я точно знаю, что они есть, проблема в конкретно в шаблоне.Сами жанры также исчезают с боковой панели, но тег заголовка и некоторые другие остаются. Я не могу понять, в чем проблема.
url
urlpatterns = [
path('', index, name='index'),
path("filter/", views.FilterBookView.as_view(), name='filter'),
path('allbook', AllBookView.as_view(), name='allbook'),
# path('addbook', AddBookView.as_view(), name='addbook'),
# path('register', RegisterView.as_view(), name='reg'),
# path('login', LoginView.as_view(), name='login'),
# path('logout', LogoutView.as_view(), name='logout'),
# path('info/<int:id>', MoreInfoView.as_view(), name='more_info'),
# path('profile', profileview, name='profile'),
# path('password-change', ChangePasswordView.as_view(), name='change_pass'),
# path('like/<int:pk>', LikeView, name='like_book'),
# path('random/', views.random_book, name='random_book'),
# path('review/<int:pk>', AddReview.as_view(), name='review'),
]
views.py
class FilterBookView(GenreView, ListView):
def get_queryset(self):
queryset = BookModel.objects.filter(
Q(genres__in=self.request.GET.getlist("genre"))
)
return queryset
class GenreView:
def get_genres(self):
return Genre.objects.all()
class AllBookView(View):
def get(self, request):
allbook = BookModel.objects.all()
view_genres = GenreView.get_genres(self)
return render(request, 'bookapp/bookmodel_list.html', context={
'allbook': allbook,
'viewgenre': view_genres,
})
models.py
class Genre(models.Model):
name = models.CharField('Имя', max_length=100)
def __str__(self):
return self.name
class Meta:
verbose_name = "Жанр"
verbose_name_plural = "Жанры"
class BookModel(models.Model):
title = models.CharField(max_length=100, verbose_name='Название')
creator = models.CharField(max_length=100, verbose_name='creator', null=True)
author = models.CharField(max_length=100, verbose_name='автор')
contentbook = models.TextField(verbose_name='Содержание')
picture = models.ImageField(upload_to='images/', verbose_name='Обложка')
price = models.IntegerField(null=True, verbose_name='Цена')
price_rent = models.IntegerField(null=True, verbose_name='Аренда')
likes = models.ManyToManyField(User, related_name='book_post', verbose_name='лайкнули')
genres = models.ManyToManyField(Genre, verbose_name='жанры')
html
<header></header>
<div></div> (Внутренности этих тегов надеюсь не так важны, но они выводятся)
<form action="{% url 'filter' %}" method="get">
<div class="left-side my-4">
<h3 class="sear-head editContent">Жанры</h3>
<ul class="w3layouts-box-list" style="list-style-type: none; padding: 0">
{% for genre in viewgenre %}
<li class="editContent" style="list-style-type: none; padding: 0">
<input type="checkbox" class="checked" name="genre" value="{{ genre.id }}">
<span class="span editContent">{{ genre.name }}</span>
</li>
{% endfor %}
</ul>
</div>
<!-- // preference -->
<!-- discounts -->
<button type="submit">Найти</button>
</form>