First, just a word of advice: never say "I can't make it work" and leave it at that. Always use a "here's what I expected to happen, and here's what happened instead" pattern, with specifics.
Try changing CloudSave (which works like Save and expects to write the contents of a symbol, not a general expression) to CloudPut (which works like Put and expects to write an expression).
Also, pay attention to what the form function returns. Right now I see the browser downloading a file with the CloudObject expression in it, which is what CloudSave returned. Instead you could make a compound expression and return a message:
FormFunction[
"PartsLists" -> "CSV",
(
CloudPut[#PartsLists, CloudObject["MyProject/"]];
"Thank you!"
)
]