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' 이라고만 했기 때문!!!
(나도 그런줄 알았어... 진정해..)
일단 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
가 있으니까. (명확히 해주는것이 중요)
진짜.. 멘탈이 나갈뻔 했다.😱
나와 같은 경우가 없는지 구글링을 해봐도 나의 경우는 없고 다 다른 케이스만 있었다...
진짜 다른사람의 코드도 뜯어가며 봐왔기 때문인지 이번 에러를 해결하고나서의 뿌듯함은 비교도 할 수 없이 크지만, 허탈함 또한 공존하는... 힘빠지는 상태😂
그럼 모두... 🔥불코딩...!🔥
성준님이 저의 몇시간을 세이브 해주셨습니다... 감쟈합니다...