code: def _delete(self, pk):
          
          item = self.datamodel.get(pk, self._base_filters)
          if not item:
              abort(404)
          try:
              self.pre_delete(item)
          except Exception as e:
              flash(str(e), 'danger')
          else:
              view_menu = security_manager.find_view_menu(item.get_perm())
              pvs = security_manager.get_session.query(
                  security_manager.permissionview_model).filter_by(
                  view_menu=view_menu).all()
  
              schema_view_menu = None
              if hasattr(item, 'schema_perm'):
                  schema_view_menu = security_manager.find_view_menu(item.schema_perm)
  
                  pvs.extend(security_manager.get_session.query(
                      security_manager.permissionview_model).filter_by(
                      view_menu=schema_view_menu).all())
  
              if self.datamodel.delete(item):
                  self.post_delete(item)
  
                  for pv in pvs:
                      security_manager.get_session.delete(pv)
  
                  if view_menu:
                      security_manager.get_session.delete(view_menu)
  
                  if schema_view_menu:
                      security_manager.get_session.delete(schema_view_menu)
  
                  security_manager.get_session.commit()
  
              flash(*self.datamodel.message)
              self.update_redirect()
docs: Delete function logic, override to implement diferent logic
              deletes the record with primary_key = pk
  
              :param pk:
                  record primary key to delete