filters.py 603 B

12345678910111213141516171819202122
  1. import django_filters
  2. from .models import Tag
  3. __all__ = (
  4. 'TagFilter',
  5. )
  6. class TagFilter(django_filters.ModelMultipleChoiceFilter):
  7. """
  8. Match on one or more assigned tags. If multiple tags are specified (e.g. ?tag=foo&tag=bar), the queryset is filtered
  9. to objects matching all tags.
  10. """
  11. def __init__(self, *args, **kwargs):
  12. kwargs.setdefault('field_name', 'tags__slug')
  13. kwargs.setdefault('to_field_name', 'slug')
  14. kwargs.setdefault('conjoined', True)
  15. kwargs.setdefault('queryset', Tag.objects.all())
  16. super().__init__(*args, **kwargs)