'Performs an update on the model instance. You can pass in values to set on the model
for updating, or you can call without values to execute an update against any modified
fields. If no fields on the model have been modified since loading, no query will be
performed. Model validation is performed normally. Setting a value to `None` is
equivalent to running a CQL `DELETE` on that column.
It is possible to do a blind update, that is, to update a field without having first selected the object out of the database.
See :ref:`Blind Updates <blind_updates>`'

def update(self, **values):

    for (column_id, v) in values.items():
        col = self._columns.get(column_id)
        if (col is None):
            raise ValidationError('{0}.{1}    has    no    column    named:    {2}'.format(self.__module__, self.__class__.__name__, column_id))
        if col.is_primary_key:
            current_value = getattr(self, column_id)
            if (v != current_value):
                raise ValidationError("Cannot    apply    update    to    primary    key    '{0}'    for    {1}.{2}".format(column_id, self.__module__, self.__class__.__name__))
        setattr(self, column_id, v)
    if self._is_polymorphic:
        if self._is_polymorphic_base:
            raise PolymorphicModelException('cannot    update    polymorphic    base    model')
        else:
            setattr(self, self._discriminator_column_name, self.__discriminator_value__)
    self.validate()
    self.__dmlquery__(self.__class__, self, batch=self._batch, ttl=self._ttl, timestamp=self._timestamp, consistency=self.__consistency__, conditional=self._conditional, timeout=self._timeout, if_exists=self._if_exists).update()
    self._set_persisted()
    self._timestamp = None
    return self
