diff --git a/news/filters.py b/news/filters.py index f8698af0..c0ea057b 100644 --- a/news/filters.py +++ b/news/filters.py @@ -18,7 +18,6 @@ class NewsFilter(filters.FilterSet): .filter(datetime_created__gt=datetime.datetime(...)) """ - # title__contains = filters.Filter(field_name="title", lookup_expr="contains") text__contains = filters.Filter(field_name="text", lookup_expr="contains") datetime_created__gt = filters.DateTimeFilter( field_name="datetime_created", lookup_expr="gt" diff --git a/vacancy/filters.py b/vacancy/filters.py index b44f941b..6f21c8a3 100644 --- a/vacancy/filters.py +++ b/vacancy/filters.py @@ -90,6 +90,11 @@ def filter_by_salary_max(self, queryset: QuerySet[Vacancy], name, value: list[st except ValueError: return queryset + def filter_by_role(self, queryset: QuerySet[Vacancy], name, value: list[str]) -> QuerySet[Vacancy]: + if not value: + return queryset + return queryset.filter(role__icontains=value[0]) + project_id = filters.Filter(method=project_id_filter) is_active = filters.BooleanFilter(field_name="is_active") @@ -106,12 +111,14 @@ def filter_by_salary_max(self, queryset: QuerySet[Vacancy], name, value: list[st choices=WorkFormat.choices(), ) + role_contains = filters.Filter(method="filter_by_role") salary_min = filters.Filter(method="filter_by_salary_min") salary_max = filters.Filter(method="filter_by_salary_max") class Meta: model = Vacancy fields = ( + "role_contains", "project_id", "is_active", "required_experience",