【发布时间】:2018-08-20 19:38:56
【问题描述】:
我正在将一个项目从 Django 1.10.8 升级到 1.11,但我的单元测试中突然出现奇怪的错误。
我使用了一个小技巧来更新现有的多对多关系,以使用带有额外“订单”字段的自定义“通过”表。在 1.10 中一切正常,但现在在 1.11 中失败了
django.db.utils.ProgrammingError: column api_session_pollgroups.pollgroup_id does not exist
我的模型代码如下所示:
class SessionPollGroup(models.Model):
session = models.ForeignKey('api.Session')
pollgroup = models.ForeignKey('api.PollGroup')
order = models.PositiveSmallIntegerField(default=0)
class Meta:
db_table = 'api_session_pollgroups'
ordering = ('order',)
当最初的多对多关系建立时,表“api_session_pollgroups”已经存在,我“劫持”它以添加额外的订单字段。
会话模型上的关系如下所示
pollgroups = models.ManyToManyField('api.PollGroup',
related_name='sessions',
through=SessionPollGroup)
任何人都知道为什么这将无法在 django 1.11 而不是 1.10 中生成或找到正确的数据库模式?
注意:这似乎只出现在单元测试期间,当我使用常规迁移创建新数据库时,表似乎在我的开发数据库 (postgres) 中正确创建,但在单元测试数据库 (sqlite) 中没有正确创建
谢谢!
编辑:已经扫描了变更日志,但看不到任何关于此的内容。我能想到的最好的办法是与表空间有关,但我不知道到底是什么。
【问题讨论】:
-
你试过运行
makemigrations吗? -
是的,什么都没出现:(
标签: django postgresql unit-testing django-migrations