【问题标题】:Django: text fixture fails to loadDjango:文本夹具无法加载
【发布时间】:2011-02-13 14:16:24
【问题描述】:

做了我项目的转储数据,然后在我的新测试中我将它添加到了fixtures中。

from django.test import TestCase

class TestGoal(TestCase):
    fixtures = ['test_data.json']
    
    def test_goal(self):
        """
        Tests that 1 + 1 always equals 2.
        """
        self.failUnlessEqual(1 + 1, 2)

运行测试时我得到:

安装夹具的问题 'XXX/fixtures/test_data.json':

DoesNotExist:XXX 匹配查询 不存在。

但是当数据库为空时,手动执行 loaddata 工作正常 不会。 我做了一个dropdb,创建了一个简单的syncdb,尝试加载数据,但失败了,同样的错误。

有什么线索吗?

Python 版本 2.6.5,Django 1.1.1

【问题讨论】:

  • fixtures/ 目录下是否有 test_data.json? test_data.json 长什么样子?
  • 在那里可用,看起来像来自 manage.py dumpdata 命令的数据

标签: django testing fixtures


【解决方案1】:

也许你有一些外键问题。如果您的模型包含引用另一个模型的外键,但另一个模型不存在,您将收到此错误。

这可能有几个原因:如果您指向另一个应用程序中的模型,而您没有包含在 test_data.json 转储中,那么您将遇到麻烦。

此外,如果外键发生变化,这可能会破坏序列化 - 这对于自动创建的字段(如 permissionsgeneric relations)尤其成问题。 Django 1.2 支持natural keys,这是一种使用模型的“自然”表示作为外键而不是可能更改的 ID 进行序列化的方法。

【讨论】:

    猜你喜欢
    • 2013-10-24
    • 2013-03-06
    • 2013-08-24
    • 2014-08-16
    • 2011-03-10
    • 2018-05-16
    • 2010-11-30
    • 2015-01-01
    • 2012-02-24
    相关资源
    最近更新 更多