Ссылка на круговую модель Django / Python

Итак, я пытаюсь написать хороший организованный код и на самом деле создавать отдельные приложения django, а не комбинировать все вместе в 1. Моя проблема в том, что у меня есть 3 приложения, каждая из которых ссылается на одну другую модель из следующего приложения. Таким образом, в основном у меня бесконечный цикл, App A нужно знать о B.models.something1, App B должен знать о C.models.Somthing2, а App C должен знать об A.models.something3. Это, конечно, не сработает, для тех, кто задается вопросом, действительно ли это проблема :). Есть ли что-то похожее на предварительное определение классов, поэтому python будет знать, что классы действительно существуют?

Благодарю.

EDIT: More Code: К сожалению, характер и модели моего проекта являются конфиденциальными, поэтому мне придется менять имена, чтобы они отражали нечто совершенно иное, но код останется прежним.

Преподаватель / models.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 

студент / models.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) 

школа / models.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 

Итак, вот что я получаю:

Файл «/Users/userzero/django/myapp/school/models.py», строка 2, из файла restore.models импортирует файл местоположения «/Users/userzero/django/myapp/teacher/models.py», строка 2, в from student.models импортировать файл жалобы «/Users/userzero/django/myapp/student/models.py», строка 3, из файла school.models импортировать файл школы «/Users/userzero/django/myapp/casino/models.py ", строка 2, в from teacher.models import Location ImportError: невозможно импортировать имя Расположение

  • Как создать список случайных целых векторов, сумма которых равна x
  • Создание графиков matplotlib без запуска X-сервера
  • множественная ось в matplotlib с разной шкалой
  • Как настроить локальный каталог библиотеки python / PYTHONPATH?
  • Как заставить PyCharm отображать данные Unicode в консоли?
  • pandas groupby сортировать по группам
  • Эффективный расчет перекрытия диапазона дат в python?
  • Значение кортежа по ключу
  • One Solution collect form web for “Ссылка на круговую модель Django / Python”

    Из документов :

    Чтобы ссылаться на модели, определенные в другом приложении, вы можете явно указать модель с полной меткой приложения. Например, если модель производителя выше определена в другом приложении с названием production, вам нужно будет использовать:

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

    Такая ссылка может быть полезна при разрешении циклических импортных зависимостей между двумя приложениями.

    Поэтому для ваших приложений попробуйте изменить, например,

      location = models.ForeignKey(Location) 

    в

      location = models.ForeignKey('Location') 

    Обратите внимание: если эта модель находится в другом приложении, вам также нужно указать это (спасибо @Bran за указание этого), например

      location = models.ForeignKey('teacher.Location') 
    Python - лучший язык программирования в мире.