Sử dụng các mô hình liên quan sau đây (một blog entry có thể có nhiều sửa đổi):Django - xóa Cascade trong 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)
[...]
Làm thế nào tôi có thể nói Django để xóa tất cả liên quan BlogEntryRevision
s khi BlogEntry
tương ứng sẽ bị xóa? Mặc định có vẻ là giữ các đối tượng trong một quan hệ nhiều-nhiều nếu một đối tượng của "bên kia" bị xóa. Bất kỳ cách nào để làm điều này - tốt nhất là không ghi đè BlogEntry.delete
?
Có, tôi thừa nhận rằng sai lầm trong phần bình luận cho câu trả lời khác. Vì lợi ích của sự hoàn chỉnh: Giả sử một trường hợp sử dụng có ý nghĩa hơn với 'ManyToManyRelation', điều gì sẽ là một cách tốt để xếp tầng xóa? Cách tiếp cận từ câu trả lời đã xóa của Gabi Purcaru có hiệu quả không? – AndiDog
Việc xóa sẽ nhảy vào '' null = True'' –
Hành vi xóa tầng trên 'ForeignKey' có thể được điều khiển bằng ['on_delete'] (https://docs.djangoproject.com/en/dev/ref/models/ fields/# django.db.models.ForeignKey.on_delete) (nhưng không mặc định là 'CASCADE') – meshy