stosując następujące modele pokrewnych (jeden wpis w blogu może mieć wiele poprawek):Django - usunięcie Kaskada w 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)
[...]
Jak mogę powiedzieć Django, aby usunąć wszystkie związane BlogEntryRevision
S Kiedy odpowiadająca BlogEntry
zostanie usunięty? Domyślnie wydaje się, że zachowujemy obiekty w relacji wiele do wielu, jeśli obiekt "drugiej" strony zostanie usunięty. Jakikolwiek sposób to zrobić - najlepiej bez przesłonięcia BlogEntry.delete
?
Tak, przyznałem, że błąd w komentarzu do drugiej odpowiedzi. W celu zapewnienia kompletności: Zakładając, że przypadek użycia ma sens z "ManyToManyRelation", jaki byłby dobry sposób na kaskadowe usuwanie? Czy podejście z usuniętej odpowiedzi Gabi Purcaru działa? – AndiDog
Usunięcia będą kaskadowane na '' null = True'' –
Zachowanie Cascade-delete na 'ForeignKey's może być kontrolowane przez [' on_delete'] (https://docs.djangoproject.com/en/dev/ref/models/ fields/# django.db.models.ForeignKey.on_delete) (ale domyślnie 'CASCADE') – meshy