关于django:loaddata命令以将来的模型状态反序列化灯具

loaddata command deserializes fixture with a future model state

所以...这是我遇到的问题:

我的Django项目已损坏:我登陆默认主页,说start project,而manage.py runserver [::]:8000run migrate

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

无论如何,我分别运行了manage.py reset_dbmanage.py syncdb,真正的问题出在这里:

最初的迁移成功了,没有任何问题,但是随后,我有一些通过数据迁移加载的夹具,并且由于

而失败

django.db.utils.OperationalError: Problem installing fixture 'scopes_fixtures.json': Could not load utils.MPTTScope(pk=0118cd35-e6dd-4a38-8cc8-f9cf07cfdd05): (1054,"Unknown column 'enabled' in 'field list'")

使用将来的应用程序模型定义对灯具进行反序列化

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

是否有任何选项可以强制loaddata使用由先前迁移建立的应用程序模型定义对设备进行反序列化?


这并非您要找的答案,但让我给您一个可以帮助解决此问题的观点。使用数据迁移,以便在导入此数据时应用程序的状态始终相同。

https://docs.djangoproject.com/zh-CN/1.9/topics/migrations/#data-migrations

1
$ ./manage.py makemigrations [appname] --empty

0012_some_migration.py

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# -*- 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),
    ]