Mit den folgenden verwandten Modelle (ein Blog-Eintrag können mehrere Versionen haben):Django - Cascade Deletion in ManyToManyRelation
class BlogEntryRevision(models.Model):
revisionNumber = models.IntegerField()
title = models.CharField(max_length = 120)
text = models.TextField()
[...]
class BlogEntry(models.Model):
revisions = models.ManyToManyField(BlogEntryRevision)
[...]
Wie kann ich Django sagen alle zugehörigen BlogEntryRevision
s zu löschen, wenn der entsprechende BlogEntry
gelöscht wird? Der Standardwert scheint Objekte in einer Viele-zu-Viele-Beziehung zu halten, wenn ein Objekt der "anderen" Seite gelöscht wird. Irgendeine Möglichkeit dies zu tun - vorzugsweise ohne zu überschreiben BlogEntry.delete
?
Ja, ich habe diesen Fehler im Kommentar zu der anderen Antwort zugegeben. Der Vollständigkeit halber: Unter der Annahme eines Anwendungsfalles, der mit 'ManyToManyRelation' sinnvoller ist, was wäre ein guter Weg, um Löschungen zu kaskadieren? Gilt der Ansatz aus der gelöschten Antwort von Gabi Purcaru? – AndiDog
Löschvorgänge kaskadieren auf '' null = True'' –
Kaskadenlöschverhalten auf 'ForeignKey's kann mit [' on_delete'] gesteuert werden (https://docs.djangoproject.com/de/dev/ref/models/ fields/# django.db.models.ForeignKey.on_delete) (aber standardmäßig auf 'CASCADE') – meshy