Digamos que tengo un modelo con una tabla Things y una tabla de relaciones entre las cosas llamada ThingRelations. No debería ser posible eliminar una Cosa cuando hay ThingRelations que apuntan a ella. Así es como estoy tratando de implementar eso:
from django.db import models class ThingRelation(models.Model): first_thing = models.ForeignKey('Thing', on_delete=models.PROTECT) second_thing = models.ForeignKey('Thing', on_delete=models.PROTECT) class Thing(models.Model): name = CharField(max_length=260)¿Cómo elimino automáticamente una Cosa cuando ya no hay más Relaciones de Cosa que la apunten?
Tienes tales opciones:
Command y algo así como crontab . O podría diseñarse como una rutina periodiq . De esta forma, puede seleccionar repetidamente todos los modelos Thing que no tienen relación con ThingRelation .signals.py . De esta manera, cuando se elimine la entrada de ThingRelation , debe verificar tanto first_thing como second_thing para saber si tienen más relaciones de ThingRelation que los apunten.signal.py , pero a nivel de base de datos. ¿Cuál deberías elegir? Depende de los detalles de su objetivo exacto. En cuanto a mí, uso la opción periodiq en casos simples y DB trigger si apunto a un alto rendimiento.