2013-08-18 13 views
9

Ho un app Django con il seguente nella sua models.py di file:nome non è definito nel modello di 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 

Ma quando corro python manage.py syncdb ottengo il seguente errore:

NameError: name 'Venue' is not defined

Perché questo è quando class Venue si trova nel file? Ho fatto qualcosa di sbagliato? Ho appena seguito il tutorial di Django allo https://docs.djangoproject.com/en/1.5/intro/tutorial01/.

risposta

17

Spostare la definizione di Venue prima della definizione di Event. Il motivo è che Event fa riferimento alla classe Venue nella sua relazione ForeignKey prima che Venue sia definito.

Oppure si può fare questo:

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

che ha funzionato. Grazie! Ci scusiamo per la domanda n00b; appena iniziato con Python e Django. –

+0

Felice di essere di aiuto. –

Problemi correlati