python - 名称未在 Django 模型中定义

标签 python django

我有一个 Django 应用程序,其 models.py 文件中包含以下内容:

from django.db import models

class Event(models.Model):
    date = models.DateField()
    name = models.TextField(max_length=60)
    venue = models.ForeignKey(Venue)

    def __unicode__(self):
        return self.name

class Venue(models.Model):
    name = models.TextField(max_length=60)
    street_address = models.TextField(max_length=60)
    locality = models.TextField(max_length=60)
    region = models.TextField(max_length=60)
    postal_code = models.TextField(max_length=60)
    country_name = models.TextField(max_length=60)
    latitude = models.DecimalField(max_digits=9, decimal_places=6)
    longitude = models.DecimalField(max_digits=9, decimal_places=6)

    def __unicode__(self):
        return self.name

但是当我运行 python manage.py syncdb 时,出现以下错误:

NameError: name 'Venue' is not defined

class Venue 在文件中时,为什么会这样?我做错了什么吗?我一直在关注 https://docs.djangoproject.com/en/1.5/intro/tutorial01/ 上的 Django 教程.

最佳答案

Venue 的定义移到 Event 的定义之前。 原因是在定义 Venue 之前,Event 在其 ForeignKey 关系中引用了 Venue 类。

或者你可以这样做:

venue = models.ForeignKey('Venue')

关于python - 名称未在 Django 模型中定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18303406/

相关文章:

python - save() 缺少 1 个必需的位置参数 : 'self' Error while using Django Signal Dispatcher

python - 为什么 selenium-webdriver (LiveServerTestCase) 仍然指向错误的数据库?

python - 用 Python 构建随机列表

python - 在单元测试中将 JSON 发布到 Flask 端点时出现错误请求

Python 构造嵌套的 Try except 语句

python - 给定变量访问 django 模板的字典?

python - 从数据框 Pandas 创建多索引

python - 万物皆对象是如何工作的?

python - Django 在渲染中传递多个变量

python - 在 django admin 中创建对象时如何自动插入当前用户?