【发布时间】:2011-04-10 14:20:24
【问题描述】:
我有一个 django 应用程序,它基本上只是一个相册。现在我有两个模型:Image 和 Album。除其他外,每个Album 都有一个指向Image 的外键作为其缩略图,每个Image 都有一个指向它所属的Album 的外键。但是,当我尝试使用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 中切换类的顺序时,我得到了同样的错误,除了它说 'Album' undefined 而不是 'Image' undefined 我还尝试在第一个类中注释依赖关系,然后在其他所有内容成功导入后取消注释,但是那没有帮助。我应该如何去做这项工作?我不愿意做一个完整的第三类Thumb,因为它会有很多与Image相同的代码我也很确定我可以手动将外键添加到数据库中,但我希望它是干净的而不是 hackish。
【问题讨论】:
标签: python mysql django foreign-keys