【问题标题】:Django says my Model is not definedDjango说我的模型没有定义
【发布时间】:2013-07-15 16:02:38
【问题描述】:

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

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

【问题讨论】:

    标签: python django model-view-controller web


    【解决方案1】:

    Country的类定义移到文件中User上方

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

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

    这方面的文档可以是found here

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

      • 不用担心。我会选择 karthikr 使用“国家”的替代方法。这样你就不用搬东西了。我只是想解释一下编译是如何工作的:)
      猜你喜欢
      • 1970-01-01
      • 2014-10-17
      • 2020-05-05
      • 2014-04-19
      • 2022-10-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-21
      相关资源
      最近更新 更多