갈루아의 반서재

Django에서 ForeignKey 사용시 NameError 가 뜨는 경우


아래 예제에서와 같이 Chpater 클래스에서 UserInfor 클래스의 sn 을 Foreign Key 관계를 맺을려고 하는 경우 아래와 같이 NameError가 뜨는 경우이다.


NameError : .... is undefined.


class Chapter(models.Model):

   sn = models.ForeignKey(UserInfo)    ..........



class UserInfo(models.Model):

    sn= models.CharField(max_length=20, primary_key=True)

    nm = models.CharField(max_length=50, blank=True, null=True)

    userid = models.CharField(max_length=20, blank=True, null=True)


이 경우는 클래스의 순서때문에 발생하는 에러이다. 파이썬은 인터프리터 언어이며, 인터프리터는 한 줄 한 줄 읽어나간다. 파이썬 인터프리터는 forward lookup 을 하지 않는다는 이야기이다. 따라서 아래와 같이 순서를 조정해야 한다.


class UserInfo(models.Model):

    sn= models.CharField(max_length=20, primary_key=True)

    nm = models.CharField(max_length=50, blank=True, null=True)

    userid = models.CharField(max_length=20, blank=True, null=True)


class Chapter(models.Model):

   sn = models.ForeignKey(UserInfo)    ..........