2013-08-18 13 views
9

Mam app Django z następujących w jego models.py plik:Nazwa nie jest zdefiniowane w modelu 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 

Ale kiedy biegnę python manage.py syncdb pojawia się następujący błąd:

NameError: name 'Venue' is not defined

Dlaczego tak jest, gdy class Venue znajduje się w pliku? Czy zrobiłem coś złego? Właśnie śledziłem samouczek Django pod numerem https://docs.djangoproject.com/en/1.5/intro/tutorial01/.

Odpowiedz

17

Przeniesienie definicji Venue przed definicją Event. Powodem jest, że Event odwołuje się do klasy Venue w jej relacji ForeignKey przed zdefiniowaniem Venue.

Albo można to zrobić:

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

To działało. Dzięki! Przepraszamy za pytanie n00b; dopiero zaczyna się od Pythona i Django. –

+0

Cieszę się, że mogę pomóc. –

Powiązane problemy