简体   繁体   English

Django 模型无法迁移

[英]Django models can't migrate

I'm having a models file like this:我有一个这样的模型文件:

from django.db import models

class Gin(models.Model):
    objectId = models.CharField(max_length=100, unique=True)
    alcohol = models.FloatField(null=True, blank=True, default=None)
    name = models.CharField(max_length=100)
    picture = models.CharField(max_length=200)

class GinLocal(models.Model):
    objectId = models.CharField(max_length=100)
    origin = models.TextField()
    serve = models.TextField()
    aroma = models.TextField()

The second class GinLocal is added after I run the following terminal commands:在我运行以下终端命令后添加了第二个类 GinLocal:

python manage.py makemigrations ginsdb
python manage.py migrate ginsdb

The first time it runned fine the second time when I added the second model I always get this error on the migrate command:第一次运行正常,第二次添加第二个模型时,我总是在 migrate 命令上收到此错误:

(myvenv) ➜  gins4udjango python manage.py migrate ginsdb       
Operations to perform:
  Apply all migrations: ginsdb
Running migrations:
  Rendering model states... DONE
  Applying ginsdb.0002_ginlocal...Traceback (most recent call last):
  File "/Users/donpironet/Documents/Development/Private/gins4udjango/myvenv/lib/python3.5/site-packages/django/db/models/options.py", line 580, in get_field
    return self.fields_map[field_name]
KeyError: <django.db.models.fields.CharField>

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "manage.py", line 10, in <module>
    execute_from_command_line(sys.argv)
  File "/Users/donpironet/Documents/Development/Private/gins4udjango/myvenv/lib/python3.5/site-packages/django/core/management/__init__.py", line 353, in execute_from_command_line
    utility.execute()
  File "/Users/donpironet/Documents/Development/Private/gins4udjango/myvenv/lib/python3.5/site-packages/django/core/management/__init__.py", line 345, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/Users/donpironet/Documents/Development/Private/gins4udjango/myvenv/lib/python3.5/site-packages/django/core/management/base.py", line 348, in run_from_argv
    self.execute(*args, **cmd_options)
  File "/Users/donpironet/Documents/Development/Private/gins4udjango/myvenv/lib/python3.5/site-packages/django/core/management/base.py", line 399, in execute
    output = self.handle(*args, **options)
  File "/Users/donpironet/Documents/Development/Private/gins4udjango/myvenv/lib/python3.5/site-packages/django/core/management/commands/migrate.py", line 200, in handle
    executor.migrate(targets, plan, fake=fake, fake_initial=fake_initial)
  File "/Users/donpironet/Documents/Development/Private/gins4udjango/myvenv/lib/python3.5/site-packages/django/db/migrations/executor.py", line 92, in migrate
    self._migrate_all_forwards(plan, full_plan, fake=fake, fake_initial=fake_initial)
  File "/Users/donpironet/Documents/Development/Private/gins4udjango/myvenv/lib/python3.5/site-packages/django/db/migrations/executor.py", line 121, in _migrate_all_forwards
    state = self.apply_migration(state, migration, fake=fake, fake_initial=fake_initial)
  File "/Users/donpironet/Documents/Development/Private/gins4udjango/myvenv/lib/python3.5/site-packages/django/db/migrations/executor.py", line 198, in apply_migration
    state = migration.apply(state, schema_editor)
  File "/Users/donpironet/Documents/Development/Private/gins4udjango/myvenv/lib/python3.5/site-packages/django/db/migrations/migration.py", line 123, in apply
    operation.database_forwards(self.app_label, schema_editor, old_state, project_state)
  File "/Users/donpironet/Documents/Development/Private/gins4udjango/myvenv/lib/python3.5/site-packages/django/db/migrations/operations/models.py", line 59, in database_forwards
    schema_editor.create_model(model)
  File "/Users/donpironet/Documents/Development/Private/gins4udjango/myvenv/lib/python3.5/site-packages/django/db/backends/base/schema.py", line 235, in create_model
    definition, extra_params = self.column_sql(model, field)
  File "/Users/donpironet/Documents/Development/Private/gins4udjango/myvenv/lib/python3.5/site-packages/django/db/backends/base/schema.py", line 134, in column_sql
    db_params = field.db_parameters(connection=self.connection)
  File "/Users/donpironet/Documents/Development/Private/gins4udjango/myvenv/lib/python3.5/site-packages/django/db/models/fields/related.py", line 967, in db_parameters
    return {"type": self.db_type(connection), "check": []}
  File "/Users/donpironet/Documents/Development/Private/gins4udjango/myvenv/lib/python3.5/site-packages/django/db/models/fields/related.py", line 958, in db_type
    rel_field = self.target_field
  File "/Users/donpironet/Documents/Development/Private/gins4udjango/myvenv/lib/python3.5/site-packages/django/db/models/fields/related.py", line 861, in target_field
    return self.foreign_related_fields[0]
  File "/Users/donpironet/Documents/Development/Private/gins4udjango/myvenv/lib/python3.5/site-packages/django/db/models/fields/related.py", line 594, in foreign_related_fields
    return tuple(rhs_field for lhs_field, rhs_field in self.related_fields if rhs_field)
  File "/Users/donpironet/Documents/Development/Private/gins4udjango/myvenv/lib/python3.5/site-packages/django/db/models/fields/related.py", line 581, in related_fields
    self._related_fields = self.resolve_related_fields()
  File "/Users/donpironet/Documents/Development/Private/gins4udjango/myvenv/lib/python3.5/site-packages/django/db/models/fields/related.py", line 574, in resolve_related_fields
    else self.remote_field.model._meta.get_field(to_field_name))
  File "/Users/donpironet/Documents/Development/Private/gins4udjango/myvenv/lib/python3.5/site-packages/django/db/models/options.py", line 582, in get_field
    raise FieldDoesNotExist('%s has no field named %r' % (self.object_name, field_name))
django.core.exceptions.FieldDoesNotExist: Gin has no field named <django.db.models.fields.CharField>
(myvenv) ➜  gins4udjango 

Does anyone have an idea?有没有人有想法? I don't see the problem.我看不出问题。

EDIT:编辑:

Latest migration file

# -*- coding: utf-8 -*-
# Generated by Django 1.9.5 on 2016-04-23 10:45
from __future__ import unicode_literals

from django.db import migrations, models


class Migration(migrations.Migration):

    dependencies = [
        ('ginsdb', '0007_delete_ginlocal'),
    ]

    operations = [
        migrations.CreateModel(
            name='GinLocal',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('objectId', models.CharField(max_length=100)),
                ('origin', models.TextField()),
                ('serve', models.TextField()),
                ('aroma', models.TextField()),
            ],
        ),
    ]

As mentioned in error log, problem is in : ginsdb.0002_ginlocal... that is located in ../Path_To_Your_App/ginsdb/migrations如错误日志中所述,问题出在: ginsdb.0002_ginlocal...位于../Path_To_Your_App/ginsdb/migrations

You have 2 choices:您有 2 个选择:

1- If your database is empty and you have not entered anything in it can simply create a new database, change you database in settings.py , clear all migrations in ../Path_To_Your_App/ginsdb/migrations and then try this: 1- 如果您的数据库是空的并且您没有在其中输入任何内容,则可以简单地创建一个新数据库,在settings.py更改您的数据库,清除../Path_To_Your_App/ginsdb/migrations所有迁移,然后尝试以下操作:

>>>python manage.py makemigrations
>>>python manage.py migrate ginsdb

2- If you don't prefer to change your database should find cause of error, for beginning should post all files in your ../Path_To_Your_App/ginsdb/migrations/ and say the steps you go to design your models. 2- 如果您不喜欢更改数据库,则应查找错误原因,开始时应将所有文件发布到../Path_To_Your_App/ginsdb/migrations/并说明您设计模型的步骤。

In some cases it will simply work when you delete ../Path_To_Your_App/ginsdb/migrations/ginsdb.0002_ginlocal...在某些情况下,当您删除../Path_To_Your_App/ginsdb/migrations/ginsdb.0002_ginlocal...时,它只会起作用../Path_To_Your_App/ginsdb/migrations/ginsdb.0002_ginlocal...

I will suggest you to make the project and copy the app and as well as the sqlite file then update you settings.py by adding your app.我会建议您制作项目并复制应用程序以及 sqlite 文件,然后通过添加您的应用程序来更新您的 settings.py。 It will solve your problem它会解决你的问题

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM