Как импортировать классы в другие классы в том же файле в Python - PullRequest
1 голос
/ 19 мая 2010

У меня есть файл ниже, и он является частью проекта django под названием projectmanager, этот файл - projectmanager / projects / models.py. Всякий раз, когда я использую интерпретатор python для импорта проекта, просто чтобы проверить функциональность, я получаю ошибку имени для строки 8, что 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 ]

3 голосов
/ 19 мая 2010

Хотя в целом МакПетерсон прав, чтобы найти имя, оно должно быть определено выше, где оно используется, в вашем случае это не поможет. В Django вы не можете произвольно назначать классы в качестве свойств других классов. Вы должны определить правильные отношения между ними. Я предлагаю вам прочитать документацию по полям отношений .

0 голосов
/ 19 мая 2010

Вы объявили FileRepo, прежде чем вызывать его? IE, перемещение класса FileRepo впереди класса Project в файле models.py?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...