def _set_pk(self, value):
        """
        Use the given value as the instance's primary key, if it doesn't have
        one yet (it must be used only for new instances). Then save default values.
        """
        if self._pk:
            raise ImplementationError('Something wrong happened, the PK was already set !')
        self._pk = value
        self._connected = True
        # Default must be set only at first initialization
        self._set_defaults()