【发布时间】:2019-11-15 17:04:26
【问题描述】:
首先,现有模型在'0001_initial.py'中。
添加我添加的“模型”后,当我执行“makemigrations”时,它将进入“0002_xxx.py”。
我迁移成功了,数据库没有问题。
然后当这些“模型”被添加后,我想将初始数据放入数据库中。
所以我制作了fixture文件夹,用于在进行迁移后放入初始数据。
我把json文件放进去。
但是,当我更改 'model' 的名称并再次执行 'makemigrations' 时,我在查找表时出错。
所以我直接去sqlite,把新模型上的表全部抹掉了。
然后我做了迁移。
之后,
python3 manage.py migrate sbimage
当我像这样“迁移”这里时,
django.db.utils.OperationalError: table "sbimage_camerathreshold" already exists
有这样的错误。
python3 manage.py migrate sbimage --fake
这使得 0001、0002 都被“伪造”了。
这是我的 0002 文件是在“makemigrations”之后创建的。
from django.db import migrations, models
def load_my_initial_data(apps, schema_editor):
call_command("loaddata", "addition.json")
class Migration(migrations.Migration):
dependencies = [
('sbimage', '0001_initial'),
]
operations = [
migrations.CreateModel(
name='AuthNumberR',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('auth_number_r', models.CharField(max_length=64)),
],
),
migrations.CreateModel(
name='AuthNumberT',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('auth_number_t', models.CharField(max_length=64)),
],
),
migrations.CreateModel(
name='Claimant',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('claimant', models.CharField(max_length=64)),
],
),
migrations.CreateModel(
name='CountryOfOrigin',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('country_of_origin', models.CharField(max_length=64)),
],
),
migrations.CreateModel(
name='EquipmentName',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('equipment_name', models.CharField(max_length=64)),
],
),
migrations.CreateModel(
name='FccId',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('fcc_id', models.CharField(max_length=64)),
],
),
migrations.CreateModel(
name='Manufacturer',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('manufacturer', models.CharField(max_length=64)),
],
),
migrations.CreateModel(
name='NbId',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('nb_id', models.CharField(max_length=64)),
],
),
migrations.CreateModel(
name='Publisher',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('publisher', models.CharField(max_length=64)),
],
),
migrations.CreateModel(
name='WarningStateList',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('warning', models.CharField(max_length=4096)),
],
),
migrations.CreateModel(
name='WifiWarningStateList',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('wifi_warning', models.CharField(max_length=4096)),
],
),
migrations.RunPython(load_my_initial_data),
]
在这种情况下,我如何创建一个包含新创建模型的表格?
-
此代码根本不起作用。
python3 manage.py 迁移 sbimage 0002
运行迁移: 没有要应用的迁移。
【问题讨论】:
-
清除所有迁移并重试