We do not call the default getter as we have the value cached in the
        instance in its _pk attribute

def get(self):
        """
        We do not call the default getter as we have the value cached in the
        instance in its _pk attribute
        """
        if not hasattr(self, '_instance'):
            raise ImplementationError("Impossible to get the PK of an unbound field")
        if not hasattr(self._instance, '_pk'):
            raise DoesNotExist("The current object doesn't exists anymore")

        if not self._instance._pk:
            self.set(value=None)

        return self.normalize(self._instance._pk)