I have a retrieveAPIView and I have to set one of its field to the serializer_context
class FoodRetrieveAPIView(RetrieveAPIView):
serializer_class = serializers.FoodRetrieveSerializer
permission_classes = [IsAuthenticated]
queryset = models.Food.objects.all()
def get_serializer_context(self):
context = super().get_serializer_context()
query_params = self.request.query_params
delivery_date = query_params.get("delivery_date")
context["delivery_date"] = delivery_date
And in my serializer, I have to access the context
class FoodRetrieveSerializer(serializers.ModelSerializer):
items = FoodItemSerializer(many=True)
class FoodItemSerializer(serializers.ModelSerializer):
item = serializers.SerializerMethodField()
def get_item(self, obj):
return ItemValueRetrieveSerializer(
instance=obj.get_item(), many=False, context=self.context
).data
class ItemValueRetrieveSerializer(serializer.ModelSerializer):
value = serializers.SerializerMethodField()
def get_value(self, obj):
delivery_date = self.context.get("delivery_date")
food_value = obj.get_food_value(delivery_date=delivery_date)
I've been trying this way a couple of times but i can't still get the value of delivery_date in context. How can i do this? Thanks!