Django ForeignKey on_delete - состав против агрегации - PullRequest
1 голос
/ 11 января 2020

Является ли on_delete = models.CASCADE представляющим композицию и модели. Агрегирование PROTECT?

Поскольку одним из основных различий между агрегацией и композицией является то, что в композиции, если составной класс удаляется, все объекты составляющей классы разбиты по следствиям, и поскольку этого не происходит при агрегации, верно ли приведенное выше утверждение?

1 Ответ

1 голос
/ 11 января 2020

Оба CASCADE и PROTECT представляют композицию, поскольку оба подразумевают, что дочерний объект не может существовать, если родительский объект удален. PROTECT не позволяет удалить родительский объект, если существует дочерний объект, и, как вы сказали, CASCADE удалит все дочерние объекты

SET_NULL , SET_DEFAULT и SET представляют агрегацию, поскольку в каждом случае «дочерний» объект модели может продолжать существовать при удалении родителя

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...