Модели Django. py Круговой внешний ключ

У меня есть приложение 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 . Я также почти уверен, что могу вручную добавить внешний ключ в база данных, но я хочу, чтобы она была чистой, а не хакерской.

17
задан jamesbtate 10 September 2010 в 05:50
поделиться