如何在 Django Rest Framework 的 search_fields 中重命名字段?

3

我有

class ProductSearch(ListAPIView):
    queryset = Product.objects.all()
    permission_classes = [AllowAny]
    serializer_class = ProductSearchSerializer
    filter_backends = [SearchFilter]
    filter_fields = ['meta_data', 'store__district__id']

但是当我通过API进行搜索时,我需要输入

"store__district__id": "blabla"

但实际上我只想要

"district_id": "x"

有人可以帮忙吗?

1个回答

2

定制一个像这样的搜索过滤器:

from rest_framework import filters

class ProductSearchFilter(filters.SearchFilter):
    def get_search_fields(self, view, request):
        fields = super(CustomSearchFilter, self).get_search_fields(view, request)
        if 'district_id' in fields:
            fields['store__district__id'] = fields.pop('district_id')
        return fields

将其放置在filter_backends中,并将district_id放置在视图的search_fields中:最初的回答
class ProductSearch(ListAPIView):
    queryset = Product.objects.all()
    permission_classes = [AllowAny]
    serializer_class = ProductSearchSerializer
    filter_backends = [ProductSearchFilter]
    search_fields = ['meta_data', 'district_id']

这正是我正在寻找的。非常感谢! - Jorge Arévalo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接