7

所以我正在使用 Django 开发一个项目,并且我正在尝试在一些模型(例如用户和国家/地区)之间创建几种关系。当我尝试同步数据库时,我的控制台输出“未定义名称国家”。查看代码:

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

你能帮我解决这个问题吗?

4

2 回答 2

29

在文件中移动Country上面的类定义User

或者

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

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

可以在此处找到有关此的文档

于 2013-07-15T16:04:55.227 回答
4

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

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

因此,基本的经验法则-> 必须在调用或引用之前定义所有内容

于 2013-07-15T16:05:49.887 回答