“编程错误:关系“音乐专辑”的“流派标识”列不存在,而该列不存在

2024-10-04 05:31:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下型号:

class CulturalDocument(CacheMixin, models.Model):
    ...
    uuid = UUIDField(unique=True)


class Genre(CulturalDocument):
    name = models.CharField(max_length=32)
    ...

class Album(CulturalDocument):
    ...
    genre = models.ForeignKey(Genre, null=True, blank=True)

我添加了带有南迁移的genre属性。在

我可以在表music_album中使用pg\\admin查看genre_id列。在

但是,当我这样做时:

^{pr2}$

我得到:

 "ProgrammingError: column "genre_id" of relation "music_album" does not exist" while the column does exist
 LINE 1: ..._id", "title", "release_date", "right_holder_id", "genre_id"...
 .                                                            ^

在Ubuntu12.04中使用Postgres9.2和Django1.6。在

生成的SQL是:

INSERT INTO "music_album" ("culturaldocument_ptr_id", "title", "release_date", "right_holder_id", "genre_id") VALUES (%s, %s, %s, %s, %s)

Tags: idtruealbumdatereleasetitlemodelsmusic
2条回答

从你的代码来看:

  album = Album.objects.create(uuid=3,
                             release_date=datetime(2000, 1, 1),
                             title="Fantastic Album",
                             right_holder=rh)

正在传递4个元素,而表需要5个(缺少genre_id)。尝试:

^{pr2}$

其中VALID_ID是流派的有效值。在

找到了!在

我在运行单元测试时遇到这个错误。迁移时,我在常规数据库上应用迁移,但单元测试使用不同的数据库。在

在Py.测试,我的测试工具,被设置为刷新表,但不是在测试之间删除它们,以加快速度。因此,测试表使用迁移前已有的方案。我刚把它们删掉然后强制py.测试重新创造它们。在

相关问题 更多 >