我为我的 API 公开的模型设置了一个标记系统。模型看起来像这样:
class TaggableModel(models.Model):
name = models.CharField(max_length=255)
tags = models.ManyToManyField(Tag, related_name="taggable_models")
class Tag(models.Model):
tag = models.CharField(max_length=32)
然后我设置了一个序列化程序并查看如下所示:
class TaggableModelSerializer(serializers.ModelSerializer):
class Meta:
model = TaggableModel
fields = ('id', 'name', 'tags',)
read_only_fields = ('id',)
class TaggableModelViewSet(viewsets.ModelViewSet):
queryset = TaggableModel.objects.all()
serializer_class = TaggableModelSerializer
permission_classes = (AllowAny,)
filter_backend = [DjangoFilterBackend]
filterset_fields = ['tags']
如果我想获取所有TaggableModels标签 ID 为 1、2 或 3 的内容,可以通过以下方式进行:
https://my-api-domain/api/taggable-models?tags=1&tags=2&tags=3
有没有办法在分隔符上拆分,所以我可以将它全部作为一个参数传递?例如:
https://my-api-domain/api/taggable-models?tags=1,2,3
看起来我可以编写自己的自定义 DjangoFilterBackend 过滤器,但我有点不确定从哪里开始。或者也许有更简单的方法来实现这一点?
largeQ
30秒到达战场
相关分类