You are using the module global __name__
in your metaclass. That's neither the name of your metatype nor your class.
Your metaclass is handed the name of the new class already, in the name
attribute. Simply use that:
class SuperModel(type):
def __new__(cls, name, base, attrs):
if 'collection' not in attrs:
attrs['collection'] = name.lower()
return super().__new__(cls, name, base, attrs)