This is mostly a usability issue. I suppose it also extends to problems with introspection -- if you are using existing code that inspects the contents returned by dir()
instead of hasattr()
In[10]: MyModel.objects.a_test_manager_method()
Out[10]: [<MyModel: 33bb1701-2148-4d1b-9479-ac330d04a852>]
In[11]: dir(MyModel.objects)
Out[11]:
['__class__',
'__delattr__',
'__dict__',
'__doc__',
'__format__',
'__getattr__',
'__getattribute__',
'__hash__',
'__init__',
'__module__',
'__new__',
'__reduce__',
'__reduce_ex__',
'__repr__',
'__setattr__',
'__sizeof__',
'__str__',
'__subclasshook__',
'__weakref__',
'_copy_to_model',
'_db',
'_deny_methods',
'_inherited',
'_insert',
'_queryset_cls',
'_set_creation_counter',
'_update',
'aggregate',
'all',
'annotate',
'bulk_create',
'complex_filter',
'contribute_to_class',
'count',
'create',
'creation_counter',
'dates',
'db',
'db_manager',
'defer',
'distinct',
'exclude',
'exists',
'extra',
'filter',
'for_queryset_class',
'get',
'get_empty_query_set',
'get_or_create',
'get_query_set',
'in_bulk',
'iterator',
'latest',
'model',
'none',
'only',
'order_by',
'prefetch_related',
'raw',
'reverse',
'select_for_update',
'select_related',
'update',
'using',
'values',
'values_list']
In[12]: "a_test_manager_method" in dir(UpstreamObject.objects)
Out[12]: False