Quaternion.LookAt() without restricting manual rotation

I have to automatically rotate my character every fram according to position he’s at using Quaternion.LookAt(). But at the same time I want to be able to rotate him around Z axis, which of course I can’t since that value is denied by the LookAt() function. Of course, I can solve that problem using math but maybe there’s a simpler way. I tried this

 Vector3 direction = planet.transform.position - body.transform.position;
        direction = new Vector3(direction.x, direction.y, this.transform.rotation.z);
        transform.rotation =  Quaternion.LookRotation(-direction);

But it didn’t work out.

rotation.z is Quaternion z value not the z angle to get the z angle use rotation.eulerAngles.z.

rotation is a Quaternion and Quaternion are complex data with value x,y,z,w.

the answer above made a good point.
The solution to the whole problem looks like this

Quaternion actualRotation;
        float yRot = 0;
        look.LookRotation(out actualRotation);

        Vector3 direction = planet.transform.position - body.transform.position;
        direction = new Vector3(-direction.x, -direction.y, actualRotation.eulerAngles.z);

transform.rotation = Quaternion.LookRotation(direction);
transform.rotation = actualRotation;