WET_3 | SystemCheckError
상황 🧑🏻💻
instagram project를 하면서 이제 게시글 올리기 위한 posting
app
을 만들고, models.py
에 class Posting
만들고, account
변수에 Foreign
관계를 하려 했더니 에러가 발생했다.
# posting.models.py
from django.db import models
from user.models import Accounts
class Posting(models.Model):
account = models.ForeignKey('accounts', on_delete=models.CASCADE)
...
🚨오류🚨
django.core.management.base.SystemCheckError: SystemCheckError: System check identified some issues:
ERRORS:
posting.Posting.account: (fields.E300) Field defines a relation with model 'accounts', which is either not installed, or is abstract.
posting.Posting.account: (fields.E307) The field posting.Posting.account was declared with a lazy reference to 'posting.accounts', but app 'posting' doesn't provide model 'accounts'.
💡해결💡
오류가 걸렸을땐, makemigrations도 되지 않았다.
(models.py 문제이기 때문!)
결국 원인은, (이걸 찾느라 구글링 1시간 한거 실화...?)
account
변수에 ForeignKey
관계를 'accounts' 이라고만 했기 때문!!!
그게 왜?! account 맞잖아!!!!!!!!!!!!!!!!!!!!!
(나도 그런줄 알았어... 진정해..)
일단 models.ForeignKey()
안에 'accounts' 라고만 한다면 어떤 'accounts'인지 모르기 때문에 에러가 난다.
즉, 같은
models.py
에Accounts
라는class
가 또 있다면 그 클래스를 가져오기 때문.
(우리가 원하는건user
앱의models.py
의Acccounts
)
# posting.models.py
# 이런 경우에 어떤건지 모르기 때문..
class Posting(models.Model):
...
class Accounts(models.Model):
...
이제... 해결해보자...😂
from django.db import models
from user.models import Accounts
class Posting(models.Model):
account = models.ForeignKey('user.accounts', on_delete=models.CASCADE)
위의 코드처럼 'user.accounts'라고 해야한다!
Why?
user
app
에 account
가 있으니까. (명확히 해주는것이 중요)
Error를 해결하고나서 느낌 💣
진짜.. 멘탈이 나갈뻔 했다.😱
나와 같은 경우가 없는지 구글링을 해봐도 나의 경우는 없고 다 다른 케이스만 있었다...
진짜 다른사람의 코드도 뜯어가며 봐왔기 때문인지 이번 에러를 해결하고나서의 뿌듯함은 비교도 할 수 없이 크지만, 허탈함 또한 공존하는... 힘빠지는 상태😂
그럼 모두... 🔥불코딩...!🔥
Author And Source
이 문제에 관하여(WET_3 | SystemCheckError), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@code_sign/WET3저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)