It is rather fussy stuff, the metal. Remember, every time you touch the bare metal you transfer grease and oil from your fingers to it, which doesn't help the paint either. Once oyu have washed it and before you have undercoated, you should try to handle the model as little as possible. For this reason, I file down the model, pin whatever bits need it, glue it, and GS it before cleaning with warm soapy water. Then as soon as the model is dry, give it an undercoat.
Some metals also tend to feel powdery. It is bad if that is the case. I tend to lightly run the back edge of my scalpel over most of the model to reveal the metal underneath.
If you are having a lot of trouble with them even after cleaning, there are a few more things you can try that could be part of the problem. Temperature and humidity can effect how well the paint sticks, make sure the undercoat goes on when it is reasonable dry (not raining) and preferable between 20-30C so it isn't too hot or too cold.
A small trick some painters swear by is to put the model out in the sun for half an hour or so before undercoating. This allows the material to 'get used' to the surroundings, and UV light is known to increase the wetability of surfaces so it should allow the paint to stick a bit better.