我在我的网络应用程序中使用了django-taggit和django-filter,它们存储了法律决定。我的主要观点(下面)继承自股票django-filter FilterView
,并允许人们根据法规和法规的一部分过滤决策。
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
我还会在添加主题后按主题标记决策,并且我希望人们能够对此进行过滤。我目前在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']
我尝试将“标记”添加到fields
中的DecisionFilter
列表但是没有效果,可能是因为TaggableManager是管理器而不是数据库中的字段。我没有在文档中找到任何涵盖此内容的应用程序。是否可以过滤taggit标签?
答案 0 :(得分:2)
您应该可以使用'tags__name'作为搜索/过滤字段。查看http://django-taggit.readthedocs.org/en/latest/api.html#filtering
上的过滤部分