def update(self, value): current_value = self.value new_value = self.to_python(value) if current_value != new_value: db_value = self.get_db_prep_save(value) try: s = self.setting s.value = db_value except SettingNotSet: log.debug('new setting %s.%s', self.group.key, self.key) s = Setting(group=self.group.key, key=self.key, value=db_value) if self.use_default and self.default == new_value: if s.id: log.info("Deleted setting %s.%s", self.group.key, self.key) s.delete() else: log.info("Updated setting %s.%s = %s", self.group.key, self.key, value) s.save() return True return False