所以我正在使用Django开发一个项目,我正试图在一些模型(如User和Country)之间创建几个关系。当我尝试syncdb我的控制台输出“名称国家未定义”。看看代码:
class User(models.Model):
name = models.CharField(max_length=50,null=False)
email = models.EmailField(max_length=50,null=False)
password = models.CharField(max_length=10,null=False)
country = models.ForeignKey(Country,null=False) #error here
rol = models.ForeignKey(Rol,null=False)
job = models.ManyToManyField(Job) #UserxJob
skill = models.ManyToManyField(Skill) #UserxSkill
plan = models.ManyToManyField(Plan) #UserxPlan
image = models.ForeignKey(Image)
description = models.TextField(max_length=300)
website = models.URLField(max_length=100,null=True)
def __unicode__(self):
return self.name
class Country(models.Model):
name = models.CharField(max_length=50,null=False)
def __unicode__(self):
return self.name
你可以帮我解决这个问题吗?
答案 0 :(得分:19)
在文件
中的Country
上方移动User
的班级定义
OR
在User
模型中,将属性country
更新为:
country = models.ForeignKey('Country',null=False)
有关此问题的文档可以是found here
答案 1 :(得分:3)
您需要将Country的定义移到User的定义之上。
正在发生的事情是编译器(编译为.pyc字节代码时)正在编译User的Class定义并看到对Country类型对象的引用。编译器还没有看到这个定义,也不知道它是什么,因此没有定义它的错误。
所以基本的经验法则 - >在您致电或引用之前必须先定义所有内容