我正在尝试将django-synchro升级到django 2.2。我已经将项目升级到django 2.1,但现在ContentType对象存在问题
可以找到here
到django 2.1的升级版本。(python runtests.py有效,所有测试均通过)
使用Django 2.2.3时出现错误
django.db.utils.OperationalError:没有这样的表:django_content_type
似乎在初始化时,迁移是在默认数据库上完成的,其余的则是在测试数据库上(在内存中)完成的。因此在其余的代码中看不到ContentType。读取models.py
时发生错误
(content_type = models.ForeignKey(ContentType, on_delete=models.CASCADE))
任何想法都将不胜感激...
2.2中有两个向后不兼容的更改,它们可能会导致错误:
TransactionTestCase序列化数据加载:初始数据 迁移现在在末尾加载到TransactionTestCase中 测试,数据库刷新后。在旧版本中,此数据是 在测试开始时加载,但这阻止了测试 --keepdb选项无法正常工作(整个测试套件结束时数据库为空)。此更改不应影响 您的测试,除非您自定义了TransactionTestCase的内部结构。
测试:现在,在 就像在其他后端那样,在SQLite 3.20+上进行每个TestCase测试 支持可延期的约束。这些检查并未针对 SQLite的旧版本,因为它们需要昂贵的表 在那里自省。
答案 0 :(得分:0)
对我来说,这是django 2.2发行说明中的说明
如果未迁移的应用与以下内容有关系,则在SQLite上测试将失败 具有迁移功能的应用程序。自从 迁移已在Django 1.7中添加,但现在更可靠地失败了。 您会看到测试失败,并显示诸如此类表格之类的错误: _。几个第三方应用程序都观察到了这种情况 在测试中没有迁移的模型。您必须添加迁移 对于此类模型。
我不确定该错误消息是否特别有用。但是经过一轮升级并检查了我是否没有真正的旧django模块似乎可以解决此问题。