Django 1.7 数据表已存在,后跟查找/值错误 - 模型不存在
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,这可能是其中之一。