Django, использование значения ForeignKey в модели - PullRequest
0 голосов
/ 09 августа 2011

Я бы хотел сделать систему, в которой фотографии принадлежат проектам. Я также включил, что я могу загрузить zip-файл непосредственно для проекта, и он разархивирует и зарегистрирует фотографии в указанном проекте. Однако у меня возникают проблемы при определении класса Photo.

Мне нужно получить значение Project.file_zip.path с текущим экземпляром для определения атрибута img поля upload_to. Тем не менее, когда я попробовал, как показано ниже, он возвращается с AttributeError: 'ForeignKey' object has no attribute 'file_path'. Как мне это исправить?

class Project(models.Model):
....
owner=models.ForeignKey(User)
file_zip=models.FileField(upload_to='projects/%Y/%m/%d')

def __unicode__(self):
    return self.project_name

def file_path(self):
    return re.search(re.search('[^\s]+(?=\.zip)', self.file_zip).group(0))

class Photo(models.Model):
    belongs_to=models.ForeignKey(Project)
    img=models.ImageField(upload_to='/home/contact/python_project/all_bugs_will_reveal/'+belongs_to.file_path())
    desc=models.CharField(max_length=255)

1 Ответ

2 голосов
/ 09 августа 2011

Нельзя ссылаться на поля в модели в определении той же модели, так как в момент чтения определения класс еще не определен.

Решение состоит в том, чтобы использоватьможет вызываться для upload_to - как показано в документации , это может быть функция с заданными параметрами instance и filename, поэтому вы можете вызвать instance.filepath(), чтобы получить правильный путь.

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