在django 1.7+数据迁移中轻松使用fixture。

django-migration-fixture的Python项目详细描述


在django 1.7+数据迁移中轻松使用fixture。

应用程序还包含一个管理命令,用于自动转换 initial_data.*迁移。

在django 1.7之前的initial_data.*文件中,当 管理命令sync_db已运行,但此行为是 在Django 1.7停产。因此,如果您依赖于此,此应用程序将非常有用 行为。

本质上,它保留initial_data.*文件并生成 数据迁移-概述 in the docs

安装

pipinstalldjango-migration-fixture

然后将django_migration_fixture添加到INSTALLED_APPS中。

INSTALLED_APPS+=('django_migration_fixture',)

用法

要自动更改旧的skoolinitial_data.*文件,最简单的方法是 方法是简单地调用create_initial_data_fixtures管理 命令。

./manage.py create_initial_data_fixtures

管理命令将自动查找initial_data.*文件 在INSTALLED_APPS列表中,为找到的每个文件创建一个数据 迁移,如下所示;

# -*- coding: utf-8 -*-from__future__importunicode_literalsfromdjango.dbimportmodels,migrationsfromdjango_migration_fixtureimportfixtureimportmyappclassMigration(migrations.Migration):operations=[migrations.RunPython(**fixture(myapp,'initial_data.yaml'))]

从这一点上说,只需要运行migrate来应用您的数据 迁徙。

请注意,此解决方案还支持通过删除 使用主键。如果你的迁移不应该是可逆的,那么你可以通过 可逆=假fixture()

你可以将此应用程序用于任何设备,它们不必是你的初始数据 文件夹。只需创建一个空迁移并添加对 migrations.RunPython(**fixture(myapp, 'foo.yaml'))

API文档

fixture(app, fixtures, fixtures_dir='fixtures', raise_does_not_exist=False, reversible=True)

  • app是一个包含您的设备的django应用程序
  • fixtures可以接受字符串或fixture文件列表。分机 用作提供给django.core.serializers.deserialize
  • 的格式
  • fixtures\u dir是应用程序中包含fixtures的目录
  • {EM1}$IGONORIGO DoToNoTy存在(EEM>)-如果设置为true,那么 django_migration_fixture.FixtureObjectDoesNotExist在以下情况下引发 试图在夹具中回滚对象不存在。
  • reversible-如果设置为False,则任何试图反转 迁移将提高django.db.migrations.migration.IrreversibleError

本质上fixture()返回包含键的dict code 以及reverse_code它们试图应用您的设备并回滚您的 分别是固定装置。

灵感

在试图将一个大型django项目迁移到1.7时,我遇到了一个问题 这导致我创建了djangoticket 24023

该项目有许多fixture来确保基线状态和转换 他们的代码不是很理想,因此这个项目。

自那时起,该问题已作为 ticket 23699它本身有 已在Django 1.7.2关闭并发布。

不用说,您可能仍然需要为fixture创建数据迁移 不管我遇到什么问题。

作者

亚历克斯·海斯,alex@alution.com>;

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
Java正则表达式模式编译最佳实践(使用enum)   使eclipse动态web项目在real server中拥有站点的java步骤   java创建JSON对象   JavaJBox2D+Slick2D不会发生冲突   java如何在ANTLR中处理左联想语法   java如何在JaCoCo故障保护测试执行中禁用stacktrace微调?   java有没有办法将jar库指向与Tomcat8中的war不同的位置以减少war的大小?   安卓在Java中删除主文件表   java如何将用户输入从GUI传递到主类   如何在Java中更改字符串两次(基于前面的更改)?(内部代码)   ios java小程序无法将文件保存到本地pc   透明度Java BuffereImage如何知道像素是否透明   java断开连接后如何重新连接到netty通道?   加载bean的java打印类型以及名称   java无法从活动移动到ViewPager   继承为什么java在子类中编写类的packageprivate成员时出错   如何在eclipse中导入java项目?   java在verticle vert中实例化类的危险。十、   aws cdk如何在aws cdk java中向事件规则添加目标?