Referencia del modelo circular Django / Python

Ok, estoy TRATANDO de escribir código organizado y realmente hacer aplicaciones django separadas en lugar de agrupar todo en 1. Mi problema es que tengo 3 aplicaciones, cada una de las cuales hace referencia a otro modelo de la próxima aplicación. Así que básicamente tengo un bucle sin fin, la aplicación A necesita saber acerca de B.models.something1, la aplicación B necesita saber acerca de C.models.Sththing2, y la aplicación C necesita saber acerca de A.models.something3. Esto, por supuesto, no se ejecutará, para aquellos que se preguntan si esto es realmente un problema :). ¿Hay algo parecido a una statement previa de clases para que Python sepa que las clases existen realmente?

Gracias.

EDITAR: Más Código: Desafortunadamente, la naturaleza y los modelos de mi proyecto son confidenciales, así que tendré que cambiar los nombres para reflejar algo completamente diferente, pero el código seguirá siendo el mismo.

profesor / modelos.py

from django.db import models from myapp.student.models import * from django.contrib.auth.models import User class Teacher(models.Model): """(description)""" user = models.ForeignKey(User) name = models.CharField(max_length=100) phone = models.CharField(max_length=13) phone_ext = models.CharField(blank=True, max_length=5) fax = models.CharField(blank=True, max_length=13) fax_ext = models.CharField(blank=True, max_length=100) url = models.URLField(blank=True, verify_exists=True) complaint = models.ManyToManyField(Complaint) city = models.CharField(blank=True, max_length=100) state = models.CharField(blank=True, max_length=100) postal_code = models.CharField(blank=True, max_length=15) location = models.ManyToManyField(Location) def __unicode__(self): return self.name class Location(models.Model): """(description)""" city = models.CharField(blank=True, max_length=100) state = models.CharField(blank=True, max_length=100) country = models.CharField(blank=False, max_length=100) def __unicode__(self): return self.city + ", " + self.state +", "+self.country 

estudiante / modelos.py

  from django.db import models from django.contrib.auth.models import User from myapp.school.models import School class Student(models.Model): """(Student description)""" user = models.ForeignKey(User) country = models.CharField(max_length=100) state = models.CharField(max_length=100) city = models.CharField(max_length=100) locale = models.CharField(blank=False, max_length=5) learningtype = models.CharField(blank=True, max_length=100) sites = models.TextField(blank=True) def __unicode__(self): return str(self.user) class Complaint(models.Model): """(Complaint description)""" student = models.ForeignKey(Student) site = models.ForeignKey(School) complaint = models.TextField(blank=False) def __unicode__(self): return str(self.site) 

escuela / modelos.py

  from django.db import models from myapp.teacher.models import Location class School(models.Model): """(School description)""" name = models.CharField(max_length=100) url = models.URLField(verify_exists=True) img = models.ImageField(upload_to="casion_img/") rating = models.FloatField() description = models.CharField(blank=True, max_length=300) goodstanding = models.BooleanField(default=True) location = models.ForeignKey(Location) def __unicode__(self): return self.name 

Así que aquí está lo que estoy recibiendo:

Archivo “/Users/userzero/django/myapp/school/models.py”, línea 2, desde profesor.models import Ubicación Archivo “/Users/userzero/django/myapp/teacher/models.py”, línea 2, en desde student.models import Complaint File “/Users/userzero/django/myapp/student/models.py”, línea 3, desde school.models import School File “/Users/userzero/django/myapp/casino/models.py “, línea 2, en from teacher.models import Location ImportError: no se puede importar el nombre Location

De los documentos :

Para referirse a los modelos definidos en otra aplicación, puede especificar explícitamente un modelo con la etiqueta completa de la aplicación. Por ejemplo, si el modelo del fabricante anterior se define en otra aplicación llamada producción, deberá usar:

 class Car(models.Model): manufacturer = models.ForeignKey('production.Manufacturer') 

Este tipo de referencia puede ser útil al resolver dependencias de importación circular entre dos aplicaciones.

Así que para tus aplicaciones, intenta cambiar, por ejemplo,

  location = models.ForeignKey(Location) 

a

  location = models.ForeignKey('Location') 

Tenga en cuenta que si este modelo está en una aplicación diferente, entonces también debe especificarlo (gracias, @Bran, por señalarlo), por ejemplo

  location = models.ForeignKey('teacher.Location')