WET_3 | SystemCheckError

code_sign·2021년 2월 2일
1

WET

목록 보기
2/3
post-thumbnail

상황 🧑🏻‍💻

instagram project를 하면서 이제 게시글 올리기 위한 posting app을 만들고, models.pyclass 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.pyAccounts라는 class가 또 있다면 그 클래스를 가져오기 때문.
(우리가 원하는건 user앱의 models.pyAcccounts)

# 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 appaccount가 있으니까. (명확히 해주는것이 중요)

Error를 해결하고나서 느낌 💣

진짜.. 멘탈이 나갈뻔 했다.😱
나와 같은 경우가 없는지 구글링을 해봐도 나의 경우는 없고 다 다른 케이스만 있었다...

진짜 다른사람의 코드도 뜯어가며 봐왔기 때문인지 이번 에러를 해결하고나서의 뿌듯함은 비교도 할 수 없이 크지만, 허탈함 또한 공존하는... 힘빠지는 상태😂

그럼 모두... 🔥불코딩...!🔥

profile
방탈출 좋아하는 코딩덕후

2개의 댓글

comment-user-thumbnail
2021년 2월 3일

성준님이 저의 몇시간을 세이브 해주셨습니다... 감쟈합니다...

1개의 답글