En lugar de eliminar registros en mi aplicación Django, solo quiero marcarlos como "eliminados" y ocultarlos de mis consultas activas. Mi principal razón para hacerlo es dar al usuario una opción de recuperación en caso de que accidentalmente eliminen un registro (estos registros también pueden ser necesarios para un seguimiento de auditoría de back-end.)¿Cómo puedo marcar fácilmente los registros como eliminados en los modelos de Django en lugar de eliminarlos realmente?
Existen muchas relaciones de clave externa, por lo que Marcaré un registro como eliminado. Tendría que "conectar en cascada" esta bandera de eliminación a esos registros también. ¿Qué herramientas, proyectos existentes o métodos debo usar para hacer esto?
pero no creo que las búsquedas de otros objetos respeten esto. es decir, si busca desde un modelo relacionado, usará el administrador que ignora los registros eliminados. Eso significa que los registros marcados como eliminados seguirán teniendo sus relaciones intactas, lo que probablemente no sea lo que usted desea. – fastmultiplication
@fastmultiplication Por "usará el administrador que ignora los registros eliminados", ¿quiere decir que ignorará el indicador eliminado, es decir, incluirá los registros eliminados? Ese es el comportamiento que estoy viendo. –
derecha. El uso de administradores para controlar qué objetos son accesibles solo funciona cuando usa esa clase. Digamos que la clase A está usando un administrador para ocultar objetos "eliminados", luego 'A.objects' ocultará los borrados. Pero si A está relacionado con la clase B, 'B.filter (a__name = 'smith')' buscará todos los objetos A, incluso los eliminados. – fastmultiplication