无法加载与南灯具在Django项目(Couldn't load fixtures with

2019-10-18 15:10发布

我已经被使用南方应用程序来处理架构和数据迁移的Django项目。 在我的应用我有迁移(编号0004),其负责从JSON文件加载数据灯具:

class Migration(DataMigration):

    def forwards(self, orm):
        from django.core.management import call_command
        call_command("loaddata", "dummy_data.json")

在同一个项目中,我尝试“软删除”,这需要增加一个申请,定义为增加功能:

deleted_at = models.DateTimeField(blank=True, null=True)

基于这种变化我已经添加了新的迁移,其中有数量0009.从那以后,我开始迁移命令,它给我的错误:

DatabaseError: Problem installing fixture 'C:/Users/Grzegorz/PycharmProjects/Dummy Project/Dummy\app_subapp\fixtures\dummy_data.json': Could not load app_subapp.DummyData(pk=1): (1054, "Unknown column 'deleted_at' in 'field list'")

这是很奇怪的,因为在应用迁移0004较早曾在此步骤申请确定,并从南方过程的点出现此错误deleted_at不应该在我database.I've不存在发现移动迁移与承载夹具步0004 0009后解决问题,但看起来非常肮脏,没有好的方法来解决这个问题。

你有我怎么能解决这个问题的任何意见,妥善处理移民和夹具装载与韩国?

Answer 1:

我发现了一个Django的片段,没有工作!

https://djangosnippets.org/snippets/2897/

它根据冻结夹具,而实际的模型定义您的应用程序代码中的模型加载数据! 工作非常适合我。



Answer 2:

我找到解决方法,我的问题。 最后,我从提取迁移南负载装置和委派此动作面料。 现在,我已经分居迁移并加载初始数据,使一切工作如我所料。



Answer 3:

另一解决方案是加载夹具文件和使用迁移的ORM插入:

from south.v2 import DataMigration
import json

class Migration(DataMigration):

    def forwards(self, orm):
        json_data=open("path/to/your/fixture.json")
        items = json.load(json_data)
        for item in items:
            # Be carefull, this lazy line won't resolve foreign keys
            obj = orm[item["model"]](**item["fields"])
            obj.save()

        json_data.close()

使用这种方法,你灯具将被当前的数据库结构中加载。



文章来源: Couldn't load fixtures with South in Django project