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 [])

def delete(self, dry=False, meta=None, index_fields=None):
        """
        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 [])
        """
        from datetime import datetime
        # TODO: Make sure this works safely (like a sql transaction)
        if not dry:
            self.pre_delete()
        results, errors = self._delete_relations(dry)
        if not (dry or errors):
            self.deleted = True
            self.deleted_at = datetime.now()
            self.save(internal=True, meta=meta, index_fields=index_fields)
            self.post_delete()
            if settings.ENABLE_CACHING:
                cache.delete(self.key)
        return results, errors