Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

226
Vistas
¿Cómo gestiono la eliminación con varias claves externas en la misma tabla en Django?

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?

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Tienes tales opciones:

  • Una rutina. Se puede hacer como un 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 .
  • acción de las 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.
  • Activador de base de datos (por ejemplo, para PostgreSQL ). La misma idea que la solución 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.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda