在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第三方库


热门话题
javajavax。艾尔。PropertyNotFoundException:   java为什么通过TCP发送的文件比它本身包含的文件包含更多的数据?   java为什么字符开关/案例不起作用?   php到java连接器,在哪里可以找到好的连接器   需要帮助Java简单规则形状面积计算器和if语句吗   macos如何从newstyle Oracle Java OSX捆绑包结构启动帮助页?   java既然所有的类都扩展对象,而对象是一个类,那么对象如何扩展对象呢?   java从JavaPairdd<String,Tuple2<Integer,Integer>>转换为JavaPairdd<String,Integer>   java微调器值未从一个活动传递到另一个活动   参数化类型的java数组   java不提供类。getCanonicalName是否存在性能问题?   java输入键JTextField   为什么我不能在java中调用nextLine()方法两次?   JTextPane中的java JProgressBar   java如何获取Crudepository实例?   用于提取几个<div>标记的java正则表达式   java如何使用JUnit Testrunner生成html图像   Go中Java静态属性的等价性