gpt4 book ai didi

python - 使用过滤器后端覆盖 ModelViewSet 的查询集

转载 作者:太空宇宙 更新时间:2023-11-04 08:46:43 25 4
gpt4 key购买 nike

创建自定义查询集时是否可以考虑 MyModelViewSetfilter_backends

class MyModelViewSet(viewsets.ModelViewSet):
filter_backends = (CustomFilter, )
serializer_class = MySerializer

def get_queryset(self):
# It should not return all objects, but only results from `CustomFilter`
queryset = LedgerEntry.objects.all()
# some extra filtering
return queryset

我应该如何实现?

Django:1.10

Django Rest 框架:3.4.6

最佳答案

是的,你可以。只需扩展 ViewSet 的 filter_queryset 方法

class MyModelViewSet(viewsets.ModelViewSet):
filter_backends = (CustomFilter, )
serializer_class = MySerializer

def filter_queryset(self, queryset):
# super needs to be called to filter backends to be applied
queryset = super().filter_queryset(queryset)
# some extra filtering
return queryset

在 ViewSet 的 Action 方法中它实际上是这样做的

queryset = self.filter_queryset(self.get_queryset())

因此,发送到序列化器的查询集是由 get_queryset 创建然后用 filter_queryset 过滤的查询集

关于python - 使用过滤器后端覆盖 ModelViewSet 的查询集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39849292/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com