我有一个 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/