# https://docs.djangoproject.com/en/3.0/ref/models/fields/#django.db.models.fields.files.FieldFile.delete
1. 명시적 삭제 - model이 삭제 될때 첨부파일은 자동으로 삭제 되지 않는다.
따라서 models.FileField.delete(save=False) <-- save=False 옵션은 변경내용을 DB에 저장하는 query(update, insert)를 하지 않도록 하는 flag
를 직접 호출해야 한다.
# https://docs.djangoproject.com/en/3.0/topics/signals/#module-django.dispatch
2. Signals 이용 - 특정 model이 삭제되고난후(post <- 게시물이 아니고, 後다), receiver에서 event를 수신하여 처리하는 방법이다.
attFile/models.py
post/models.py
위 예제에서는 Signals code를 models module에 있으나
django.dispatch.receiver : https://docs.djangoproject.com/en/4.1/topics/signals/#django.dispatch.receiver
django.apps.AppConfig.ready : https://docs.djangoproject.com/en/4.1/ref/applications/#django.apps.AppConfig.ready
위와 같은 이유로 하위모듈(signals.py)로 분리하여 Application configuration class(apps.py)의 ready method에서 연결하는걸 추천한다.
https://www.geeksforgeeks.org/how-to-create-and-use-signals-in-django/