Django loaddata命令使用未来的模型状态反序列化fixture

Django loaddata命令使用未来的模型状态反序列化fixture,django,django-models,django-migrations,django-fixtures,Django,Django Models,Django Migrations,Django Fixtures,所以。。。以下是我遇到的问题: 我的Django项目被破坏了:我登陆了默认主页,上面写着start project,manage.py runserver[:]:8000上面写着run migrate 所有我的迁移都已应用(数据库处于正确的状态),因此我不知道发生了什么。(因此,如果有人对此重置有任何线索,我很乐意阅读他/她的答案) 无论如何,我运行了manage.py reset_db和manage.py syncdb,真正的问题来了: 最初的迁移成功了,没有任何问题,但是,我有一些设备是通

所以。。。以下是我遇到的问题:

我的Django项目被破坏了:我登陆了默认主页,上面写着
start project
manage.py runserver[:]:8000
上面写着
run migrate

所有我的迁移都已应用(数据库处于正确的状态),因此我不知道发生了什么。(因此,如果有人对此重置有任何线索,我很乐意阅读他/她的答案)


无论如何,我运行了
manage.py reset_db
manage.py syncdb
,真正的问题来了:

最初的迁移成功了,没有任何问题,但是,我有一些设备是通过数据迁移加载的,这个加载失败了

django.db.utils.OperationalError:安装装置'scopes_fixtures.json'时出现问题:无法加载utils.MPTTScope(pk=0118cd35-e6dd-4a38-8cc8-f9cf07cfdd05):(1054,“字段列表”中的未知列'enabled')

Fixture使用未来的应用程序模型定义进行反序列化 我知道
loaddata
命令使用最新的应用程序模型定义反序列化夹具,但这有点烦人,因为
enabled
字段仅在以后的迁移中添加


是否有任何选项会强制
loaddata
使用先前迁移建立的应用程序模型定义来反序列化夹具?

这不是您想要的答案,但让我给您一个可能有助于解决此问题的视角。使用数据迁移,以便导入此数据时应用程序的状态始终相同

0012_some_migration.py
是否可以选择回滚到以前的迁移?我的项目设置已完全中断,django迁移系统认为没有应用程序或数据库设置。因此,无法回滚到以前的迁移,也无法运行manage.py migrate命令,因为MySQL中已经存在这些字段。您是否考虑过创建数据迁移?或者这是一种选择?根据文档,自1.7版以来,自动加载数据已被弃用。将确保应用程序状态。当添加/编辑/删除字段并进入并不断更新json时,initial_data.json总是不同步。@Victor你是说用obj=MyObject.create(name='test')创建迁移并运行它吗?我同意,JSON反序列化不会有问题,但是如果我有几百条记录,我怎么能轻松地做到这一点呢?你有固定装置加载折旧的链接吗?loaddata在Django 1.8中似乎仍然是一个有效的选项。@NicolasW。看,谢谢你,维克多。这确实不是我想要的答案,但它将帮助我解决loaddata的大部分问题。:-)顺便说一句,你知道为什么Django使用最新的模型定义来加载使用以前的模型状态创建的数据吗?我假设在导入模型时它会使用该定义,因为在Django迁移进入框架之前,不同模型状态的概念实际上没有意义,但这只是一个猜测。
$ ./manage.py makemigrations [appname] --empty
# -*- coding: utf-8 -*-
from __future__ import unicode_literals

from django.db import migrations, models

def import_data(apps, schema_editor):
    ModelName = apps.get_model("yourappname", "ModelName")
    ModelName.objects.bulk_create([...]) 

class Migration(migrations.Migration):
    dependencies = [
        ('yourappname', '0001_initial'),
    ]

    operations = [
        migrations.RunPython(import_data),
    ]