python - django 中的 initial_data fixture 管理

标签 python django fixture

我正在处理的 django projet 有大量的 initial_data fixture 数据。默认情况下,自动加载数据的唯一方法似乎是在您的应用程序文件夹中有一个名为 fixtures 的文件,并且该文件需要命名为 initial_data.ext(ext是 xml 或 json 或 yaml 或其他东西)。

我认为这真的很不灵活。我宁愿有一个 fixtures 文件夹,然后在该文件夹中有一个 initial_data 文件夹,然后在里面,该应用程序中的每个模型都有一个文件。或者类似的东西。现在可以在 django 中这样做吗?或者可能是其他一些更好的 fixture 组织方案。

最佳答案

根据我的经验,硬编码的固定装置写起来很痛苦,维护起来也很痛苦。每当模型更改破坏固定装置时,Django 初始加载将返回非常不友好的错误消息,您最终将在 Django 核心中添加一堆打印,以便找到问题的根源。

与我一起工作的一位开发人员开发了一个非常好的库来解决这个问题,它叫做 django-dynamic-fixture我们真的很喜欢它。这是它的工作原理:

假设你有这个模型:

class Author(models.Model):
    name = models.CharField()

class Book(models.Model):
    author = models.ForeingKey(Author, required=True)
    title = models.CharField()

为了在你的测试中创建一个书籍实例,你所要做的就是

from django_dynamic_fixture import get
from app import Book

class MyTest(TestCase):
    def setUp(self):
        self.book = get(Book)

django-dynamic-fixture 会自动为您创建 Book 模型存在所需的任何依赖项。这只是一个简单的示例,但该库可以处理非常复杂的模型结构。

关于python - django 中的 initial_data fixture 管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4400609/

相关文章:

python - 无法使用 python ./manage.py dumpdata app 转储数据

python - 如何通过 Python 中 C++ 虚函数的不正确重载从 SWIG 获取正确的错误

python - 在 Python 中使用 dock 的基本 cocoa 应用程序,但不使用 Xcode 和所有其他功能

python - 使用 Django 生成要下载的文件

python - Django REST Swagger 不显示 POST 方法

django - 如何在 Django 中使用基于日期的 View

python - 时间类型误差直方图

python - 从 python 代码将 unicode 值插入 sqlite

python - 使用外键和 SQLAlchemy 导入装置?

python - 在pytest中,如何确保在类级之前调用模块级 fixture