Django에서 ForeignKey 사용시 NameError 가 뜨는 경우
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) ..........