Layer specification for bpy.ops.mesh.primitive_torus_add
Yes, that's one primitive which doesn't seem to inherit the layers attribute. You can however in the meantime use code like this to set layers.

obj.layers = [(i in [0,3,5]) for i in range(20)]


the object will appear on layer 0, 3 and 5.