У меня есть приложение django, которое по сути представляет собой просто фотоальбом. Сейчас у меня две модели: Изображение
и Альбом
. Помимо прочего, каждый альбом
имеет внешний ключ к изображению
в качестве эскиза, а каждое изображение
имеет внешний ключ к альбому
он принадлежит. Однако, когда я пытаюсь использовать manage.py syncdb
или manage.py sqlall
, я получаю сообщение об ошибке, что класс, не определенный первым в models.py, не определен когда он используется в первом определенном классе.
models.py (сокращенный):
from django.db import models
import os
class Album(models.Model):
thumb = models.ForeignKey(Image, null=True, blank=True)
class Image(models.Model):
image = models.ImageField(upload_to='t_pics/images')
thumb = models.ImageField(upload_to='t_pics/images/thumbs')
album = models.ForeignKey(Album)
Я получаю ошибку, когда выполняю manage.py sqlall appname
:
[...]
File "/path/to/file/appname/models.py", line 4, in ?
class Album(models.Model):
File "/path/to/file/appname/models.py", line 5, in Album
thumb = models.ForeignKey(Image, null=True, blank=True)
NameError: name 'Image' is not defined
Я получаю ту же ошибку, когда меняю порядок классов в models.py, за исключением того, что там написано «Альбом» undefined
вместо 'Image' undefined
Я также пробовал комментировать зависимость в первом классе, а затем раскомментировать после того, как все остальное было успешно импортировано, но это не помогло. Как мне сделать эту работу? Я не хочу создавать целый третий класс Thumb
, потому что он будет иметь много того же кода, что и Image
. Я также почти уверен, что могу вручную добавить внешний ключ в база данных, но я хочу, чтобы она была чистой, а не хакерской.