Оптимизировать код, описав скрытый метод с передачей отличительный данных

Написал два метода: create_favorite и add_to_shopping_cart. Они очень похожи. Хочу улучшить, описав отдельный скрытый метод, куда передам отличительные данные (serializer)

    @action(detail=True, methods=['post'],
            permission_classes=[IsAuthenticated],
            url_path='favorite')
    def create_favorite(self, request, pk=None):
        data = {'user': request.user.id, 'recipe': pk}
        serializer = FavoriteSerializer(
            data=data,
            context={'request': request}
        )
        serializer.is_valid(raise_exception=True)
        serializer.save()
        return Response(serializer.data, status=status.HTTP_201_CREATED)

    @action(detail=True, methods=['post'],
            permission_classes=[IsAuthenticated],
            url_path='shopping_cart')
    def add_to_shopping_cart(self, request, pk=None):
        data = {'user': request.user.id, 'recipe': pk}
        serializer = ShoppingCartSerializer(
            data=data,
            context={'request': request}
        )
        serializer.is_valid(raise_exception=True)
        serializer.save()
        return Response(serializer.data, status=status.HTTP_201_CREATED)

Ответы (0 шт):