Let me elaborate a bit on the bug report; it's terse and it took me a while to figure out what's going on.

BaseModelFormSet.add_fields(self, form, index) adds a field that contains the primary key to form. This field is invisible to the end user -- it uses a HiddenInput widget -- but it's necessary for Django to know which instance of the model form deals with, when it received the contents of form in the next request. Django uses a ModelChoiceField for this extra field: this makes sense for designating which instance the form applies to, among all existing instances of the model.

"All existing instances of the model" is qs = self.model._default_manager.get_query_set(). By definition -- and unless I missed something -- this queryset always contains all instances of the model. Could you explain how it's possible for your custom_manager to contain an object that isn't in _default_manager?