2017-04-26 106 views
1

我最近从Django 1.3升级到1.8,并且遇到了尝试进行迁移设置时遇到的问题。以前使用过South,并通过settings.py卸载它,并在每个应用中删除它们的文件夹。KeyError:u'editable'首次执行./manage.py迁移时

当试图安装迁移我得到这个错误:

[email protected]:/home/# python manage.py migrate 
Operations to perform: 
    Synchronize unmigrated apps: web_forms, staticfiles, tinymce, messages, miscellaneous, generalpagess, gallery, template, import, navigation, frontpage, association 
    Apply all migrations: admin, contenttypes, sites, auth, sessions 
Synchronizing apps without migrations: 
    Creating tables... 
    Running deferred SQL... 
    Installing custom SQL... 
Running migrations: 
    Rendering model states...Traceback (most recent call last): 
    File "manage.py", line 10, in <module> 
    execute_from_command_line(sys.argv) 
    File "/usr/lib/python2.7/dist-packages/django/core/management/__init__.py", line 354, in execute_from_command_line 
    utility.execute() 
    File "/usr/lib/python2.7/dist-packages/django/core/management/__init__.py", line 346, in execute 
    self.fetch_command(subcommand).run_from_argv(self.argv) 
    File "/usr/lib/python2.7/dist-packages/django/core/management/base.py", line 394, in run_from_argv 
    self.execute(*args, **cmd_options) 
    File "/usr/lib/python2.7/dist-packages/django/core/management/base.py", line 445, in execute 
    output = self.handle(*args, **options) 
    File "/usr/lib/python2.7/dist-packages/django/core/management/commands/migrate.py", line 222, in handle 
    executor.migrate(targets, plan, fake=fake, fake_initial=fake_initial) 
    File "/usr/lib/python2.7/dist-packages/django/db/migrations/executor.py", line 100, in migrate 
    state.apps # Render all real_apps -- performance critical 
    File "/usr/lib/python2.7/dist-packages/django/utils/functional.py", line 59, in __get__ 
    res = instance.__dict__[self.name] = self.func(instance) 
    File "/usr/lib/python2.7/dist-packages/django/db/migrations/state.py", line 166, in apps 
    return StateApps(self.real_apps, self.models) 
    File "/usr/lib/python2.7/dist-packages/django/db/migrations/state.py", line 226, in __init__ 
    self.real_models.append(ModelState.from_model(model, exclude_rels=True)) 
    File "/usr/lib/python2.7/dist-packages/django/db/migrations/state.py", line 345, in from_model 
    name, path, args, kwargs = field.deconstruct() 
    File "/usr/lib/python2.7/dist-packages/django/db/models/fields/__init__.py", line 1253, in deconstruct 
    del kwargs['editable'] 
KeyError: u'editable' 

运行makemigrations

[email protected]:/home/# python manage.py makemigrations 
Traceback (most recent call last): 
    File "manage.py", line 10, in <module> 
    execute_from_command_line(sys.argv) 
    File "/usr/lib/python2.7/dist-packages/django/core/management/__init__.py", line 354, in execute_from_command_line 
    utility.execute() 
    File "/usr/lib/python2.7/dist-packages/django/core/management/__init__.py", line 346, in execute 
    self.fetch_command(subcommand).run_from_argv(self.argv) 
    File "/usr/lib/python2.7/dist-packages/django/core/management/base.py", line 394, in run_from_argv 
    self.execute(*args, **cmd_options) 
    File "/usr/lib/python2.7/dist-packages/django/core/management/base.py", line 445, in execute 
    output = self.handle(*args, **options) 
    File "/usr/lib/python2.7/dist-packages/django/core/management/commands/makemigrations.py", line 99, in handle 
    ProjectState.from_apps(apps), 
    File "/usr/lib/python2.7/dist-packages/django/db/migrations/state.py", line 178, in from_apps 
    model_state = ModelState.from_model(model) 
    File "/usr/lib/python2.7/dist-packages/django/db/migrations/state.py", line 345, in from_model 
    name, path, args, kwargs = field.deconstruct() 
    File "/usr/lib/python2.7/dist-packages/django/db/models/fields/__init__.py", line 1253, in deconstruct 
    del kwargs['editable'] 
KeyError: u'editable' 

时一直在抓取互联网试图找到一个解决这个我也得到同样的错误,但没有骰子。

+0

我希望你先运行'''makemigrations'''? –

+0

谢谢@SijanBhandari我也从那里得到了同样的错误 –

+0

请将您的models.py与迁移相关。 –

回答

0

我终于找到了问题。它从阅读这个文件

File "/usr/lib/python2.7/dist-packages/django/db/models/fields/__init__.py", line 1253` 

它说发现

def deconstruct(self): 
    name, path, args, kwargs = super(DateField, self).deconstruct() 
    if self.auto_now: 
     kwargs['auto_now'] = True 
    if self.auto_now_add: 
     kwargs['auto_now_add'] = True 
    if self.auto_now or self.auto_now_add: 
     del kwargs['editable'] 
     del kwargs['blank'] 
    return name, path, args, kwargs 

我的代码有auto_now_add=True时间字段,其从与颈部胡须这里阅读故事后我所知是坏:Django auto_now and auto_now_add

del kwargs['editable']部分抛出错误。

+0

猴子补丁这种方法 – metaphy

相关问题