Django模型中未定义名称

时间:2013-08-18 20:36:14

标签: python django

我的 models.py 文件中有以下Django应用:

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:名称'Venue'未定义

为什么class Venue在文件中?我做错了什么吗?我刚刚在https://docs.djangoproject.com/en/1.5/intro/tutorial01/跟踪了Django教程。

1 个答案:

答案 0 :(得分:21)

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

或者你可以这样做:

venue = models.ForeignKey('Venue')