Как удалить родительский объект, связанный через поле «многие ко многим»? - PullRequest
0 голосов
/ 24 марта 2020

У меня есть три связанных модели - Document, Collection и CollectionDocument. Объект Collection состоит из группы документов.

class Document(Model):
    document_id = models.AutoField(primary_key=True)

class Collection(Model):
    collection_id = models.AutoField(primary_key=True)
    document = models.ManyToManyField(Document, through='CollectionDocument', related_name='collections',) 

class CollectionDocument(Model):
    collection_id = models.ForeignKey(Collection, on_delete=models.CASCADE, )
    document = models.ForeignKey(Document, on_delete=models.CASCADE, )

В Администраторе Djangop у меня есть DocumentAdmin и CollectionAdmin с CollectionDocument в качестве встроенных в CollectionAdmin.

Когда я удаляю все документы, связанные с Коллекцией, я также хочу удалить Коллекцию. Прямо сейчас, когда я удаляю документы в Коллекции, CollectioDocument остается пустым, но Коллекция все еще существует без каких-либо документов, связанных с ней.

Я пробовал несколько способов сделать это, используя до и после удаления сигналы для модели CollectionDocument, но, похоже, ничего не работает. Я неправильно структурировал свои модели? Как получить коллекцию для удаления при удалении всех связанных документов?

Спасибо!

Отметить

...