728x90
항상 dafault값으로 쓰다가 다른 것을 쓰려고 하니 헷갈렸다. 흔하게 쓰이는 것인데도 잘 모르고 있는 것 같아서 공부할겸 정리해보았다.
user 과 post의 관계를 1:n 이다.
user가 여러개의 post를 작성하므로 user가 1 post 가 n인 1:n 관계가 성립한다.
class USER(models.Model):
name = models.CharField(max_length=10)
class POST(models.Model):
user = models.ForeignKey(USER, on_delete=models.CASCADE)
context = models.TextField()
다음과 같이 작성할 수 있다.
이때 on_delete는 1:n의 관계에서 1이 사라지는 경우 n을 어떻게 처리할지에 대한 정의이다.
on_delete=models.CASCADE : n에 해당하는 다른 모델의 record도 전부 삭제 (default 값)
on_delete=models.PROTECT : 삭제를 방지
on_delete=models.SET_NULL : 참조하는 foreignkey값을 null로 변경한다. 이를 사용하기 위해서는 null=True 옵션을 추가해야 한다.
on_delete=models.SET_DEFAULT : 참조하는 foreignkey값을 dafault로 변경한다. 이를 사용하기 위해서는 default 값이 지정되어 있어야 한다.
on_delete=models.SET(함수) : 함수라고 쓰여있는 부분에 함수를 넣어주어야 한다. 1에 해당되는 부분이 삭제될 시 함수가 실행된다.
on_delete=models.DO_NOTHING : 아무것도 하지 않는다.
728x90
'웹개발 > django' 카테고리의 다른 글
[Django] fk의 field를 filtering 하기 (ORM) (0) | 2022.01.31 |
---|---|
[Django] makemigrations 취소하기, migrate 취소하기 (0) | 2021.10.21 |
django urls.py에서 views 함수 호출할 때 인자 전달하기 (0) | 2020.09.16 |
django에서 핸드폰 번호 추가하기 (0) | 2020.09.12 |