在Django睡觉框架中,当序列化程序嵌套在另一个序列化程序中时,如何过滤它?
我的过滤器被强加在DRF视图集中,但是当您从另一个序列化程序内部调用一个序列化程序时,嵌套的序列化程序的视图集永远不会被调用,因此嵌套的结果显示为未过滤.
我曾try 在原始视图集上添加过滤器,但它似乎无法过滤嵌套结果,因为嵌套结果会作为单独的预处理查询调用.(您可以看到,嵌套序列化程序是反向查找.)
是否可以在嵌套的序列化程序本身中添加getqueryset()覆盖(将其移出视图集),以便在那里添加过滤?我也试过了,但没有成功.
这就是我试过的,但似乎没有人叫它:
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