Пример #1
0
    def __new__(cls, name, bases, attrs):

        new_cls = type.__new__(cls, name, bases, attrs)

        if name in ("Model", "NewBase"):
            return new_cls

        mapper_class = getattr(new_cls, "Mapper", None) or getattr(new_cls, "Meta", None)
        bases = []
        if mapper_class is not None:
            bases.append(mapper_class)
        if not isinstance(mapper_class, new_cls.mapper_class):
            bases.append(new_cls.mapper_class)

        NewMapper = type("{}Mapper".format(new_cls.__name__), tuple(bases), {})
        NewMapper(new_cls)
        for k in to_tuple(mapper_registry[new_cls].pk):
            setattr(new_cls, k, None)

        return new_cls
Пример #2
0
 def __hash__(self):
     if not all(to_tuple(self._get_pk())):
         raise TypeError("Model instances without primary key value are unhashable")
     return hash(self._get_pk())