Decorator to pass instance and class to method
I'd recommend not using value.__class__. This is as it's not guaranteed to return the type.


  type(x) is typically the same as x.__class__ (although this is not guaranteed – a new-style class instance is permitted to override the value returned for x.__class__).


Take:

class A:
    __class__ = 'something'

print(A.__class__)   # &lt;class 'type'&gt;
print(A().__class__) # 'something'
print(type(A()))     # &lt;class '__main__.A'&gt;


I also think just using type would be cleaner, and easier to understand.

def save_unique(self, *args, **kwargs):
    cls = type(self)