Question

I'm using both django-taggit and django-filter in my web application, which stores legal decisions. My main view (below) inherits from the stock django-filter FilterView and allows people to filter the decisions by both statutes and parts of statutes.

class DecisionListView(FilterView):
    context_object_name = "decision_list"
    filterset_class = DecisionFilter
    queryset = Decision.objects.select_related().all()

    def get_context_data(self, **kwargs):
        # Call the base implementation to get a context
        context = super(DecisionListView, self).get_context_data(**kwargs)
        # Add in querysets for all the statutes
        context['statutes'] = Statute.objects.select_related().all()
        context['tags'] = Decision.tags.most_common().distinct()
        return context

I also tag decisions by topic when they're added and I'd like people to be able to filter on that too. I currently have the following in models.py:

class Decision(models.Model):
    citation = models.CharField(max_length = 100)
    decision_making_body = models.ForeignKey(DecisionMakingBody)
    statute = models.ForeignKey(Statute)
    paragraph = models.ForeignKey(Paragraph)
    ...
    tags = TaggableManager()


class DecisionFilter(django_filters.FilterSet):
    class Meta:
        model = Decision
        fields = ['statute', 'paragraph']

I tried adding 'tags' to the fields list in DecisionFilter but that had no effect, presumably because a TaggableManager is a Manager rather than a field in the database. I haven't found anything in the docs for either app that covers this. Is it possible to filter on taggit tags?

Was it helpful?

Solution

You should be able to use 'tags__name' as the search/filter field. Check out the Filtering section on http://django-taggit.readthedocs.org/en/latest/api.html#filtering

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top