En Django Rest Framework, ¿cómo se filtra un serializador cuando está anidado en otro serializador?
Mis filtros se imponen en los conjuntos de vistas DRF, pero cuando llama a un serializador desde dentro de otro serializador, nunca se llama al conjunto de vistas del serializador anidado, por lo que los resultados anidados aparecen sin filtrar.
Intenté agregar un filtro en el conjunto de vistas de origen, pero no parece filtrar los resultados anidados porque los resultados anidados se llaman como una consulta previa separada. (El serializador anidado es una búsqueda inversa, como ve).
¿Es posible agregar una anulación de get_queryset () en el serializador anidado en sí (moviéndolo fuera del conjunto de vistas), para agregar el filtro allí? Yo también lo intenté, sin suerte.
Esto es lo que intenté, pero ni siquiera parece que lo llamen:
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
get_queryset
es una clase enModelViewSet
, no en el serializador, por lo que no se llama