Django说我的模型没有定义

时间:2013-07-15 16:02:39

标签: python django model-view-controller web

所以我正在使用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

你可以帮我解决这个问题吗?

2 个答案:

答案 0 :(得分:19)

在文件

中的Country上方移动User的班级定义

OR

User模型中,将属性country更新为:

country = models.ForeignKey('Country',null=False) 

有关此问题的文档可以是found here

答案 1 :(得分:3)

您需要将Country的定义移到User的定义之上。

正在发生的事情是编译器(编译为.pyc字节代码时)正在编译User的Class定义并看到对Country类型对象的引用。编译器还没有看到这个定义,也不知道它是什么,因此没有定义它的错误。

所以基本的经验法则 - >在您致电或引用之前必须先定义所有内容