primarykeyrelatedfield - djangorestframework: filtrado en un campo relacionado
django rest framework serializer queryset (1)
Tendré curiosidad por ver una mejor solución también. He usado un método personalizado en mi serializador para hacer eso. Es un poco más detallado pero al menos es explícito.
Algún pseudo código donde un GarageSerializer filtraría la relación anidada de automóviles:
class MyGarageSerializer(...):
users = serializers.SerializerMethodField(''get_cars'')
def get_cars(self, garage):
cars_queryset = Car.objects.all().filter(Q(garage=garage) | ...).select_related()
serializer = CarSerializer(instance=cars_queryset, many=True, context=self.context)
return serializer.data
Obviamente reemplaza el queryset con lo que quieras. No siempre es necesario dar el contexto (lo usé para recuperar algunos parámetros de consulta en el serializador anidado) y probablemente no necesite el .select_related (que fue una optimización).
Básicamente, quiero filtrar a los usuarios inactivos de un campo relacionado de un ModelSerializer. Intenté limitar dinámicamente el queryset del campo relacionado , así como lo siguiente:
class MySerializer(serializers.ModelSerializer):
users = serializers.PrimaryKeyRelatedField(queryset=User.objects.filter(active=True), many=True)
class Meta:
model = MyModel
fields = (''users'',)
Ninguno de estos enfoques funcionó solo para filtrar el conjunto de consultas. Quiero hacer esto para una clase de Serializador relacionada anidada como un campo (pero ni siquiera puedo hacer que funcione con un Campo de control relacionado).
¿Cómo puedo filtrar queryset para relación anidada?