인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

DongMin Sim님의 프로필 이미지
DongMin Sim

작성한 질문수

Django REST Framework 핵심사항

viewset 으로 Post API 만들기

fields E300, E307 에러

작성

·

278

0

 
 
안녕하세요 강사님, viewset 으로 Post API 만들기 강의 진행중에 발생한 에러입니다. 
강의 내용대로 post url을 라우터에 등록하고, serializers 생성, view 생성 이후에 재가동하니 다음과 같은 에러가 발생하면서 동작하지 않습니다. 검색해보니 ForeignKey 로 참조하는 모델 클래스에 앱이 명시되지 않아서 그런거 같다는 거 같은데 자세한 원인은 모르겠습니다.
https://stackoverflow.com/questions/56972174/errors-book-book-author-fields-e300-book-book-author-fields-e307
 
1. 해당 오류의 원인과 lazy reference란 무엇인지요?
2. 해결방안이 궁금합니다. (다른 앱의 model을 참조할때 발생하는 문제라면 어떻게 해야하는지)
 
Post class는 `from blog.models import Post` 로 import 하여 가져왔습니다.
from django.db import models

# blog/models.py
class Post(models.Model):
    category = models.ForeignKey('Category', on_delete=models.SET_NULL, blank=True, null=True)
    tags = models.ManyToManyField('Tag', blank=True)
    title = models.CharField('TITLE', max_length=50)
    description = models.CharField('DESCRIPTION', max_length=100, blank=True, help_text='simple one-line text.')
    image = models.ImageField('IMAGE', upload_to='blog/%Y/%m/', blank=True, null=True)
    content = models.TextField('CONTENT')
    create_dt = models.DateTimeField('CREATE DT', auto_now_add=True)
    update_dt = models.DateTimeField('UPDATE DT', auto_now=True)
    like = models.PositiveSmallIntegerField('LIKE', default=0)

    class Meta:
        ordering = ('update_dt',)

    def __str__(self):
        return self.title
 
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.

답변 2

0

김석훈님의 프로필 이미지
김석훈
지식공유자

==> Post class는 `from blog.models import Post` 로 import 하여 가져왔습니다.

이게 어느 파일에 코딩한 건가요 ?

Model 이 서로 다른 파일이라면, models.ForeignKey(Post, ~) 또는 models.ForeignKey('blog.Post', ~) 라고 해보세요.

해결이 안된다면, blog/models.py 파일을 올려 주세요.

감사합니다.

DongMin Sim님의 프로필 이미지
DongMin Sim
질문자

감사합니다! 해결했습니다! 

0

김석훈님의 프로필 이미지
김석훈
지식공유자

안녕하세요. 독자님.

에러 내용에 보면,

< app 'api2' doesn't provide model 'category' >

오타 category -> Category (대문자로) 이거나,

import 가 잘못 된 듯 합니다. (모든 Model을 api2 앱이 아니라 blog 앱에 정의하고, 거기서 import 해야 함)

확인 부탁합니다. 감사합니다.

DongMin Sim님의 프로필 이미지
DongMin Sim

작성한 질문수

질문하기