diff --git a/apps/news/filters.py b/apps/news/filters.py index 084c570f..2621f3bf 100644 --- a/apps/news/filters.py +++ b/apps/news/filters.py @@ -16,6 +16,8 @@ class NewsListFilterSet(filters.FilterSet): ), method='by_tag_group' ) + tag_value__exclude = filters.CharFilter(method='exclude_tags') + tag_value__in = filters.CharFilter(method='in_tags') class Meta: """Meta class""" @@ -24,8 +26,18 @@ class NewsListFilterSet(filters.FilterSet): 'title', 'is_highlighted', 'tag_group', + 'tag_value__exclude', + 'tag_value__in', ) + def in_tags(self, queryset, name, value): + tags = value.split('__') + return queryset.filter(tags__value__in=tags) + + def exclude_tags(self, queryset, name, value): + tags = value.split('__') + return queryset.exclude(tags__value__in=tags) + def by_tag_group(self, queryset, name, value): if value == models.News.RECIPES_TAG_VALUE: queryset = queryset.recipe_news()