Уроки Django 3 - фильтр фильмов, Q в django - урок 17

preview_player
Показать описание
Создаем фильтр для фильмов по жанрам и годам. Рассмотрим об объект Q django. Передача информации в шаблон не используя get_context_data. Уроки Django 3
Не забудь подписаться на канал, чтобы не пропустить новые видео.

---=---

О веб разработке и программировании простым языком.
То что поможет стать высококвалифицированным специалистом.

---=---
🔥Провожу индивидуальные занятия по python и веб разработке (django, fastapi, flask, javascript).
---=---

#django #программирование #python
Рекомендации по теме
Комментарии
Автор


О веб разработке и программировании простым языком.
То что поможет стать высококвалифицированным специалистом.

DjangoSchool
Автор

Хороший урок, курс целиком не смотрел, но во время работы над пет-проектом возникли некоторые трудности в совмещении ajax-фильтра и пагинации, часть видео из этого цикла реально помогли. Думаю, что и остальные видео этого курса отличные!

KravaDota
Автор

Ребят, у меня было три чекбокса и я хотел иметь возможность фильтрации по одному, двум или сразу трём полям. Это реально сделать без повторений разных комбинаций. Мне помогли, а я вам:)
Это способ "дополнения" условий к фильтру
def get_queryset(self):
my_q = Q()
if 'nations' in self.request.GET:
my_q =
if 'levels' in self.request.GET:
my_q &=
if 'types' in self.request.GET:
my_q &=

queryset =
return queryset

xhwbrve
Автор

Да, прикрути пожалуйста ajax, чтобы без обновления фильтровались, думаю многие будут благодарны
А так урок как всегда на высшем уровне
Лайк за твою работу

cmzeclo
Автор

Для тех кто пишет, что хочет при выборе всех боевиков только определенного года выводились не все боевики, а только выбранного года:

def get_queryset(self):
if 'genre' in self.request.GET and 'year' in self.request.GET:
print('if genre and year')
queryset = Movie.objects.filter(
,
)
else:
print('else')
queryset = Movie.objects.filter(
|
)
return queryset

ldyusvr
Автор

Как всегда вышка !!! и с
Вадимом Шаройкин
оном тоже согласен.

gxgrpwh
Автор

Спасибо большое! Супер уроки по Django!

stanlygetz
Автор

Необходимо использовать distinct для year. При нескольких фильмах одного года, в фильтре будет повторение.

vafly
Автор

Ребят, всем привет!:) Я делаю немножко другой проект, основываясь на уроках Михаила. Было две проблемы.
1) ругался на отсутствие шаблона TemplateDoesNotExist at /filter_reviews/ - Чтобы исправить - прописал в модели Фильтров template_name =
2) Не отображались результаты поиска, была пустая страница. Для решения так-же в модели для фильтрации прописал context_object_name = 'reviews_list'. После этого всё заработало как надо. Как я уже сказал, у меня немного другие названия, но суть вы поняли. Удачи!:)

xhwbrve
Автор

Спасибо огромное за просто суперский урок

sergeikrasnovskii
Автор

Большое благодарю, спас мой заказ одной непримечательной вещью :)

kalik
Автор

пересмотрел урок 5 раз, 2 раза повторил за тобой - у меня фильмы не выводятся(

banzaika
Автор

а если мы жанр и год выбираем, но при этом у фильма год совпадает, жанр не совпадает то будет выводить всё равно, потому что одно из условий совпадает, а должно чтобы было логическое "И" при использовании обоих фильтров
Вот как я сделал, что более правильно работает:
if and
queryset = Movie.objects.filter(year__in=self.request.GET.getlist("year"),

else:
queryset = |

Теперь работает правильно

mlbb-maniac
Автор

оно выводит отдельно и года и жанры, а как можно реализовать чтобы эти фильтры были вместе? К примеру если выбран 2020 год и жанр Боевики, то чтобы выводило Боевики 2020 года

vadik
Автор

Разве этот способ фильтрации не увеличивает время обработки запросов? При большой нагрузке на сервер это будет хорошо заметно, не лучше написать менеджеры для фильтров?

yarmikd
Автор

Добрый вечер на писать видео урок как на писать парсер для этого сайта.
Чтобы не вбивать все в ручную

mojdsqh
Автор

В прошлом уроке мы передавали в шаблон actor.html контекст из класса ActorView и обращались к нему в шаблоне через actor (потому что указывали model = Actor, а context_object_name задан не был, ВЕРНО? )
В текущем уроке в шаблоне мы выводим жанры: {% for genre in view.get_genres %} ... Почему мы используем view для доступа к контексту??

iedcncl
Автор

Так, а как сделать чтобы:
- при выборе одного фильтра срабатывает поиск
И
- при выборе двух фильтров срабатывают оба, то есть год и жанр.
Ведь если в query set поставить запятую то сработает только два фильтра, а по отдельности- нет.

vladt
Автор

не получается найти ответ:
при фильтрации берется шаблон, почему пытается подтянуть именно этот? :

TemplateDoesNotExist at /filter/

razdva
Автор

Всем привет! Возник вопрос, который, как я заметил, кто-то задавал два года назад, но так и не получил ответа. Может, сейчас кто-нибудь ответит - буду признателен. Когда мы выводим в цикле жанры, то используем переменную контекста view: {% for genre in view.get_genres %} Откуда она берется? Ведь мы не задаем ее в контроллере, не называем по имени модели, как в предыдущих уроках. Откуда же тогда появляется view

yzjfubh