320x100
SystemCheckError: System check identified some issues:
ERRORS:
blog.Post.author: (fields.E320) Field specifies on_delete=SET_NULL,
but cannot be null.
HINT: Set null=True argument on the field, or change the on_delete rule.
models에 추가하는 방법 중
on_delete=SET_NULL을 입력하게 되면
이 뜻은 "만약 연결되어있는 지금 필드의 존재가 사라지더라도 데이터는 남길게"라는 뜻이라고 보면 될것같습니다.
(불확실함, 왜냐하면 말 자체가 NULL을 setting한다는 의미니깐)
(그런데 테스트 해보니깐 결과론적으로 작성자를 삭제하더라도 on_delete=SET_NULL옵션을 쓰게되면
해당 작성자의 계정이 삭제될 경우, 작성자가 None으로 바뀔뿐이지 데이터가 삭제되진않음)
하지만 중요한것은 처음에 올려드린 error 메세지에 대한 해결 방법입니다.
# 해결방법
맨 첫째줄은 무시해도됨
ERRORS: 밑부터 봐보자.
blog(앱단위).
Post(정의된 클래스인데 보통 이 에러는 models에 나오는 에러기 때문에 blog/models/Post라고 일단 봐도 될것같다).
author(Post라고 정의되어있는 클래스의 속성중 하나인 author)
에 "on_delete=SET_NULL"이 되어있어,
그런데 그건 null(빈값,공백)을 쓸수 없어
힌트: 추가적으로 null=True라고 넣어주거나, on_delete를 룰에 맞게 넣어줘봐
즉, 첫번째 방법은 기존의 문제가 생기던 null에 대한 정의가 없는
author = models.ForeignKey(User, on_delete=models.SET_NULL)
의 상태에서
author = models.ForeignKey(User, on_delete=models.SET_NULL, null=True)
이렇게 ()안에 위치는 상관없으니깐 null=True를 넣어주거나
아니면 on_delete를 본인이 아는 null에 대해 충돌에러가 발생하지 않게 변경해주면 된다.
300x250
'개발일지 > Django' 카테고리의 다른 글
Django - markdownx, ImportError: cannot import name 'url' from 'django.conf.urls' 해결 (2) | 2023.01.04 |
---|---|
Django - 장고 로그인 했을때만 접근 가능하게하는 함수 LoginRequiredMixin (1) | 2023.01.03 |
Django - It is impossible to add a non-nullable field (해결 및 설명) (1) | 2023.01.02 |
Django - CBV 방식 시리즈2 (DetailView) 완벽설명이라고 볼수있음 (0) | 2022.12.31 |
Django - CBV 방식 시리즈1 (ListView) 완벽설명이라고 볼수있음 (0) | 2022.12.31 |