2017-04-08 6 views
0

Ich habe mein Modell Config, das eine ForeignKey PeriodicTask enthält. Ich möchte eine 1 zu 1 Beziehung haben, was bedeutet, dass wenn ich Config lösche, dass PeriodicTask gelöscht wird und umgekehrt.Django Modell löschen Fremdschlüssel

class Config(models.Model): 
name = models.CharField(max_length=200, unique=True) 
task = models.ForeignKey(PeriodicTask, default=None, null=True, 
         blank=True, on_delete=models.CASCADE) 

Mit CASCADE meine Config nur wird gelöscht, wenn PeriodicTask gelöscht wird, aber nicht umgekehrt. Auch PeriodicTask gehört zu einem externen Modul, daher habe ich keinen direkten Zugriff darauf.

Wie kann ich eine 1 zu 1 Löschbeziehung erreichen?

+0

Schon gesehen (http://stackoverflow.com/a [diese Antwort?]/5185684/4974980) –

+0

Oh ja, das hat funktioniert! Vielen Dank –

Antwort

0

Hier ist, was für mich gearbeitet:

from django.db.models.signals import pre_delete 

class Config(models.Model): 
    name = models.CharField(max_length=200, unique=True) 
    task = models.ForeignKey(PeriodicTask, default=None, null=True, 
        blank=True, on_delete=models.CASCADE) 


def delete_task(sender,instance,using, **kwargs): 
    instance.task.delete() 


pre_delete.connect(delete_task, sender=Config) 

Instanz die Instanz meiner Config-Objekt zu löschen ist

Verwandte Themen