Django and MongoEngine do this a neat way - they create a DoesNotExist class dynamically on each model class. That way, you can test for both the generic DoesNotExist, or you can test for the specific one for each model class. I'd like to do something like that, but I'll think about it some more. In general, I'm trying to write Models that as closely as reasonably possible behave like MongoEngine Models, so when we switch my Models will be very easy to migrate. I'll let you know which way I decide to go with this.