如何在Python同一文件中导入类到其他类中
我有一个文件,下面是它的内容,这个文件是一个叫做 projectmanager 的 Django 项目的一部分,文件路径是 projectmanager/projects/models.py。每当我使用 Python 解释器导入一个 Project 来测试功能时,我都会在第 8 行遇到一个名称错误,提示找不到 FileRepo()。我该如何正确导入这些类呢?理想情况下,我希望每个 Project 能包含多个 FileRepo,而每个 FileRepo 又能包含不确定数量的文件。谢谢大家的帮助!
#imports
from django.db import models
from django.contrib import admin
#Project is responsible for ensuring that each project contains all of the folders and file storage
#mechanisms a project needs, as well as a unique CCL#
class Project(models.Model):
ccl = models.CharField(max_length=30)
Techpacks = FileRepo()
COAS = FileRepo()
Shippingdocs = FileRepo()
POchemspecs = FileRepo()
Internalpos = FileRepo()
Finalreports = FileRepo()
Batchrecords = FileRepo()
RFPS = FileRepo()
Businessdev = FileRepo()
QA = FileRepo()
Updates = FileRepo()
def __unicode__(self):
return self.ccl
#ProjectFile is the file object used by each FileRepo component
class ProjectFile(models.Model):
file = models.FileField(uploadto='ProjectFiles')
def __unicode__(self):
return self.file
#FileRepo is the model for the "folders" to be used in a Project
class FileRepo(models.Model):
typeOf = models.CharField(max_length=30)
files = models.ManyToManyField(ProjectFile)
def __unicode__(self):
return self.typeOf
2 个回答
0
你在调用 FileRepo 之前,有没有先声明它?也就是说,是否把 FileRepo 这个类放在了 models.py 文件中,放在 Project 这个类的前面?
3
虽然McPeterson说得对,一般来说,一个名字要被找到,必须在使用它的地方之前定义,但在你的情况下,这个方法并不管用。在Django中,你不能随便把一个类当作另一个类的属性。你需要定义它们之间的正确关系。我建议你去看看关于关系字段的文档。