cat-loves-donuts:

I mean simply use the output from module one as the input of model two


Yes, that would just work.
You can basically treat each model as a “layer” passing one output to the next layer/model.
If you would like to pass all parameters to the optimizer, just concatenate the lists together:
model1 = nn.Linear(1, 1)
model2 = nn.Linear(2, 2)

optimizer = torch.optim.SGD(
    list(model1.parameters()) + list(model2.parameters()),
    lr=1e-3
)