def delete(self, dry=False, meta=None, index_fields=None):
from datetime import datetime<EOL>if not dry:<EOL><INDENT>self.pre_delete()<EOL><DEDENT>results, errors = self._delete_relations(dry)<EOL>if not (dry or errors):<EOL><INDENT>self.deleted = True<EOL>self.deleted_at = datetime.now()<EOL>self.save(internal=True, meta=meta, index_fields=index_fields)<EOL>self.post_delete()<EOL>if settings.ENABLE_CACHING:<EOL><INDENT>cache.delete(self.key)<EOL><DEDENT><DEDENT>return results, errors<EOL>
Sets the objects "deleted" field to True and,
current time to "deleted_at" fields then saves it to DB.


Args:
    dry (bool): False. Do not execute the actual deletion.
    Just list what will be deleted as a result of relations.
    meta (dict): JSON serializable meta data for logging of save operation.
        {'lorem': 'ipsum', 'dolar': 5}
    index_fields (list): Tuple list for secondary indexing keys in riak (with 'bin' or 'int').
        bin is used for string fields, int is used for integer fields.
        [('lorem','bin'),('dolar','int')]
Returns:
    Tuple. (results [], errors [])