Djangorestframework非ORMBASE过滤

2024-10-05 10:16:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用的是DjangoRestApi,虽然它对queryset(基于orm)的视图起到了很好的作用,但我很难使视图使用不同的后端来表现与基于orm的视图相同的行为。值得注意的是,我想添加过滤器,让它们自动转换和验证。在

以下伪代码:

class NewsFilter(django_filters.FilterSet):
    category = django_filters.NumberFilter(name='category')
    limit = django_filters.NumberFilter(name='limit')
    page = django_filters.NumberFilter(name='page')


class NewsView(generics.APIView):
    filter_class = NewsFilter

    def get(self, request):
        filters = self.filter_class(??)  # not sure, what to put here

        payload = logic.get_business_news(**filters.data)  # same

        return Response(payload, status=status.HTTP_200_OK)

任何关于如何解决问题的建议都将不胜感激。在

最终目标是:

  • 用户在url中键入内容或通过POST发送,django rest截取相关值,提取它们,将它们转换为正确的类型,并作为字典返回
  • 如果序列化程序基于ORM,则过滤器的显示方式与它们相同

Tags: djangonameself视图过滤器getpageorm
1条回答
网友
1楼 · 发布于 2024-10-05 10:16:07

任何单个过滤器的函数签名如下所示

class MyFilter(django_filters.Filter):
    def filter(self,queryset,value):
        [...]

The function signature to a FilterSet is:

^{pr2}$

因此,看起来您将request.GET作为data参数传入,然后传入查询集。在

相关问题 更多 >

    热门问题