相关疑难解决方法(0)

如何在Django Rest Framework中过滤嵌套的序列化程序?

在Django Rest Framework中,如何在串行器嵌套在另一个串行器中时对其进行过滤?

我的过滤器强加在DRF视图集中,但是当您从另一个序列化程序中调用序列化程序时,嵌套序列化程序的视图集永远不会被调用,因此嵌套结果显示为未过滤.

我尝试在原始视图集上添加过滤器,但它似乎不会过滤嵌套结果,因为嵌套结果会被调用为单独的预先查询.(你看,嵌套的序列化器是反向查找.)

是否可以在嵌套的序列化程序本身中添加get_queryset()覆盖(将其移出视图集),以在那里添加过滤器?我也尝试过,没有运气.

这是我尝试过的,但它似乎甚至没有被调用:

class QuestionnaireSerializer(serializers.ModelSerializer):
    edition = EditionSerializer(read_only=True)
    company = serializers.StringRelatedField(read_only=True)

    class Meta:
        model = Questionnaire

    def get_queryset(self):
        query = super(QuestionnaireSerializer, self).get_queryset(instance)
        if not self.request.user.is_staff:
            query = query.filter(user=self.request.user, edition__hide=False)
        return query
Run Code Online (Sandbox Code Playgroud)

django django-rest-framework

68
推荐指数
5
解决办法
2万
查看次数

标签 统计

django ×1

django-rest-framework ×1