从管理员删除任何记录时Django DatabaseError?

时间:2012-07-06 14:51:57

标签: python django django-models django-admin

我在这里问了一个关于manytomanyfield的问题我已经解决但现在出现了一个新问题,

DatabaseError at /admin/myapp/photo/8/delete/

relation "woek_gallery_photos" does not exist
LINE 1: DELETE FROM "woek_gallery_photos" WHERE "photo_id" IN ...

我知道为什么这个问题引起但我不知道该怎么做。我有一个Photo模型,它与Group模型和Gallery模型有关。当我从Gallery中添加一个图像时,它的效果很好,但是对于删除它,会引发Group关于没有任何关系的问题......

class Gallery(models.Model):
    ....
    photos = models.ManyToManyField('Photo', related_name='galleries', 
             verbose_name=_('Gallery'),
                                    null=True, blank=True)

class Group(models.Model):
    ...
    photos = models.ManyToManyField('Photo', related_name='galleries', 
             verbose_name=_('Group'),
                                    null=True, blank=True, 
                                    through='through=GroupPhotos')

class Photo(models.Model):
    image = models.ImageField(verbose_name = "Browse", 
                              upload_to=myPath)

感谢您的帮助。

2 个答案:

答案 0 :(得分:4)

该错误意味着PhotoGallery之间关系的连接表缺失或从未创建过。如果您还没有这样做,请运行:

python manage.py syncdb

如果仍然无效,请手动创建表格。你可以运行:

python manage.py sqlall yourapp

获取正确的SQL使用。查找它创建woek_gallery_photos的行并复制该位。然后运行:

python manage.py dbshell

并在提示符下粘贴它。点击进入,你应该很高兴。

答案 1 :(得分:1)

relation "woek_gallery_photos" does not exist表示TABLE“woek_gallery_photos”不存在。您是否忘记在创建Photo模型后运行syncdb?