2013-08-18 31 views
9

Tôi có một ứng dụng Django những điều sau đây models.py nó file:Tên không được định nghĩa trong mô hình 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 

Nhưng khi tôi chạy python manage.py syncdb tôi nhận được lỗi sau:

NameError: name 'Venue' is not defined

Tại sao điều này xảy ra khi class Venue có trong tệp? Tôi đã làm điều gì sai ư? Tôi vừa theo dõi hướng dẫn Django tại https://docs.djangoproject.com/en/1.5/intro/tutorial01/.

Trả lời

17

Di chuyển định nghĩa Venue trước định nghĩa Event. Lý do là Event tham chiếu lớp Venue trong mối quan hệ ForeignKey của nó trước khi Venue được định nghĩa.

Hoặc bạn có thể làm điều này:

venue = models.ForeignKey('Venue') 
+0

Đó làm việc. Cảm ơn! Xin lỗi cho câu hỏi n00b; chỉ mới bắt đầu với Python và Django. –

+0

Rất vui khi được trợ giúp. –

Các vấn đề liên quan