我正在为django-pagetree库添加Django 2.0支持。在自动测试期间,使用sqlite内存数据库,我收到了很多这样的错误:
File "/home/nnyby/src/django-pagetree/pagetree/tests/test_models.py", line 638, in setUp 'children': [], File "/home/nnyby/src/django-pagetree/pagetree/models.py", line 586, in add_child_section_from_dict ... File "/home/nnyby/src/django-pagetree/venv/lib/python3.5/site-packages/django/db/backends/base/base.py", line 239, in _commit return self.connection.commit() django.db.utils.IntegrityError: FOREIGN KEY constraint failed
Django 2.0发行说明中对此进行了说明:https : //docs.djangoproject.com/en/2.0/releases/2.0/#foreign-key-constraints-are- now-enabled-on- sqlite
根据我不完全理解的描述,这不适用于不是持久性的测试数据库,对吗?使用Django 2.0时,不会使用适当的选项创建我的sqlite测试数据库吗?
我用于测试的应用程序设置在这里:https : //github.com/ccnmtl/django- pagetree/blob/master/runtests.py
该文档说两件事:
# in pagetree/models.py, line 810
@classmethod def create_from_dict(cls, d): return cls.objects.create() # what happens to d by the way?
这肯定会因ForeignKey约束错误而失败,因为PageBlock必须具有section,所以您必须create先分配它才能调用。
PageBlock
section
create