Maybe 'Invalid price' will be sufficient for both cases? Then we could return None and handle presentation (message text) in view only.