gpt4 book ai didi

python - 使用 serializers.ModelSerializer 进行过滤

转载 作者:行者123 更新时间:2023-11-28 18:48:29 26 4
gpt4 key购买 nike

我想在用于序列化查询集的类上使用过滤器。我构建了以下过滤器:

# define a filterset
class commentFilter(django_filters.FilterSet):
class Meta:
model = comment
fields = ['tag', 'title']

在通用 View 中,这很好用,我可以使用以下方法过滤它:?tag=23

# generic view
class CommentsAll(generics.ListAPIView):
model = comment
serializer_class = CommentSerializer
filter_class = commentFilter

但是对于非通用 View ,我无法使过滤功能起作用(但返回了数据)。我能看到的唯一区别是我使用的是 serializers.ModelSerializer。是否有某种方法可以对这种类型的类进行过滤?我的 View 返回模型数据的查询集,它与通用 View 中使用的数据相同。

# non generic
class CommentSerializer(serializers.ModelSerializer):
count = serializers.Field(source='subcomments')
score = serializers.Field(source='score')
upvotes = serializers.Field(source='upvotes')

class Meta:
model = comment
fields = ('title', 'comment', 'tag', 'created', 'count', 'score', 'upvotes',)

filter_class = commentFilter

最佳答案

通用 View 内置过滤和分页行为,因为它们可以将该行为 Hook 到它们创建和返回数据查询集的标准方式中。如果您正在编写自己的 View ,则需要自己应用任何过滤。

查看“GenericAPIView”的实现,尤其是“filter_queryset”方法,以了解如何实现。

关于python - 使用 serializers.ModelSerializer 进行过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16823513/

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