Django 1.7 数据表已存在,后跟查找/值错误 - 模型不存在

7 浏览
0 Comments

Django 1.7 数据表已存在,后跟查找/值错误 - 模型不存在

我正在尝试对我的应用程序进行迁移,并且我已经按照这里提供的建议进行了操作:django 1.7 migrate gets error "table already exists"

具体来说:

或者,如果你想要避免在迁移过程中执行某些操作,你可以编辑位于app/migrations目录下的迁移文件,并注释掉你不想执行的操作。

所以现在我的迁移文件看起来像这样:

# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import models, migrations
class Migration(migrations.Migration):
    dependencies = [
        ('gantt_charts', '0001_initial'),
    ]
    operations = [
        migrations.CreateModel(
            name='Dependency',
            fields=[
                ('id', models.AutoField(serialize=False, verbose_name='ID', primary_key=True, auto_created=True)),
            ],
            options={
            },
            bases=(models.Model,),
        ),
        # migrations.CreateModel(
        #     name='Task',
        #     fields=[
        #         ('id', models.AutoField(serialize=False, verbose_name='ID', primary_key=True, auto_created=True)),
        #         ('title', models.CharField(max_length=100)),
        #         ('description', models.TextField(blank=True)),
        #         ('completed', models.BooleanField(default=False)),
        #         ('project', models.ForeignKey(related_name='tasks', to='gantt_charts.Project')),
        #         ('subtasks', models.ManyToManyField(blank=True, through='gantt_charts.Dependency', related_name='supertasks', to='gantt_charts.Task', null=True)),
        #     ],
        #     options={
        #     },
        #     bases=(models.Model,),
        # ),
        migrations.AddField(
            model_name='dependency',
            name='subtask',
            field=models.ForeignKey(related_name='dependencies_as_subtask', to='gantt_charts.Task'),
            preserve_default=True,
        ),
        migrations.AddField(
            model_name='dependency',
            name='supertask',
            field=models.ForeignKey(related_name='dependencies_as_supertask', to='gantt_charts.Task'),
            preserve_default=True,
        ),
        migrations.AlterUniqueTogether(
            name='dependency',
            unique_together=set([('supertask', 'subtask')]),
        ),
    ]

问题是现在迁移工具报错了:

  • LookupError: App 'gantt_charts' doesn't have a 'task' model.
  • ValueError: Lookup failed for model referenced by field gantt_charts.Dependency.supertask: gantt_charts.Task

我怀疑我通过让表存在但Django不知道它的方式来破坏了我的数据库/Django。出于某种原因,它没有检查数据库或我的models.py文件中是否存在task模型。

我该如何使迁移工作?

顺便说一句,因为它可能与问题有关,我正在使用SQLite并且有一个自引用字段(subtasks)。文档说SQLite可能会有bug,这可能是其中之一。

0