你可以子类化ListSerializer并覆盖该
to_representation方法。
默认情况下,该
to_representation方法调用
data.all()嵌套的查询集。因此,你实际上需要
data = data.filter(**your_filters)在调用该方法之前进行制作。然后,你需要将子类化的
ListSerializer添加为嵌套序列化器的meta上的
list_serializer_class。
- 子类ListSerializer,覆盖
to_representation
,然后调用super
- 将子类ListSerializer添加为
list_serializer_class
嵌套Serializer
上的meta
这是你的示例的相关代码。
class FilteredListSerializer(serializers.ListSerializer): def to_representation(self, data): data = data.filter(user=self.request.user, edition__hide=False) return super(FilteredListSerializer, self).to_representation(data)class EditionSerializer(serializers.ModelSerializer): class meta: list_serializer_class = FilteredListSerializer model = Editionclass QuestionnaireSerializer(serializers.ModelSerializer): edition = EditionSerializer(read_only=True) company = serializers.StringRelatedField(read_only=True) class meta: model = Questionnaire



