Create a mesh/object which fills another mesh/object
Indeed as you mentioned, you could use fluids sim for this, it is it's main purpose after all.

However fluid simulations come with a bunch of problems of third own attached. They are complex, computationally expensive, consume lots of hard drive space (cache), especially if you aim for high quality, and they certainly can cause a lot of artifacts and glitches that you will have to deal with.

If you need no animation it is certainly overkill. In your case, if you nave everything modeled already I would say all you need is to duplicate your meshes, deal with the intersection areas, invert their normals and you will have a perfect fluid filling your can with a minimal amount of work.

Have in mind however that it is not advised to have coincident faces and overlapping geometry.

In most cases, the way computer graphics work, you need not model the fluids surfaces that are in contact with other opaque surfaces or objects, only the "transparent" ones that are either in contact with air or other transparent surfaces (like glass, ice, etc).

So depending on what you want to do with oyur model you may not need to model the fluids surface that is in contact with your cans.

Check this good tutorial about rendering a glass of water, it contains valuable information about the issue and may help you reach what you need

http://adaptivesamples.com/2013/10/19/fluid-in-a-glass/