包含或使用DRF进行过滤

时间:2018-02-05 11:42:34

标签: django django-rest-framework django-filter

我有一个简单的博客应用,其中包含带有ManyToManyField的模型Entry,称为标签

模型

class Tag(models.Model):
    name = models.CharField(max_length=30)

class Entry(models.Model):
    ...
    tags = models.ManyToManyFiled(Tag)
    ...

我还有一个过滤器类django_filters.rest_framework.FilterSet,它应该能够过滤包含传递给请求的唯一标记的条目或标记+其他

<小时/> 当我传递给请求 id 的标签时,如何实现FilterSet类字段以便能够以这种方式进行过滤?

1 个答案:

答案 0 :(得分:1)

使用filter_backends和filter_fields

实现这样的视图集
class EntryList(generics.ListAPIView):
   queryset = Entry.objects.all()
   serializer_class = EntrySerializer
   filter_backends = (DjangoFilterBackend,)
   filter_fields = ('tags',')

如果您想按网址参数进行过滤,那么您的网址将与此类似:

example.com/api/entry?tag=mytag