好的,所以我正在尝试编写组织良好的代码,并实际制作单独的 django 应用程序,而不是将所有内容集中到 1 个应用程序中。我的问题是我有 3 个应用程序,每个应用程序都引用下一个应用程序中的 1 个其他模型。所以基本上我有一个无限循环,应用程序 A 需要了解 B.models.something1 ,应用程序 B 需要了解 C.models.Somthing2 ,应用程序 C 需要了解 A.models.something3 。这当然不会运行,对于那些想知道这是否确实是一个问题的人来说:)。是否有类似类的预声明的东西,以便 python 知道这些类实际上存在?
Thanks.
编辑:更多代码:
不幸的是,我的项目的性质和模型是保密的,因此我必须更改名称以反映完全不同的内容,但代码将保持不变。
老师/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 行,位于
从teacher.models导入位置
文件“/Users/userzero/django/myapp/teacher/models.py”,第 2 行,位于
from Student.models 导入 投诉
文件“/Users/userzero/django/myapp/student/models.py”,第 3 行,位于
从 school.models 导入 School
文件“/Users/userzero/django/myapp/casino/models.py”,第 2 行,位于
从teacher.models导入位置
导入错误:无法导入名称位置