Add A Field In Model Which Not Exists In Data Table For Form Validating

is it a good practice in OOD?

Don’t see why its bad. I normally do it when creating something like an account table which would at the least have the following columns: id, username, password_hash.

My model would then have virtual attributes for both password and password_repeat, which are what I would use in the Account form instead of the password_hash attribute since that is what would store the final hashed password. All validations would be done against these virtual attributes.