Django custom用户在同步db时会在运行时发出导入问题

时间:2013-11-14 14:13:19

标签: python django django-models django-authentication django-syncdb

我在User中定义了自定义app.models模型。它也在AUTH_USER_MODEL设置中正确定义为app.User。当我运行网站时,一切都很完美。

然而,当我运行./manage.py syncdb --migrate时,它会突破以下追溯:

Traceback (most recent call last):
  File ".virtualenv/lib/python2.7/site-packages/django/core/management/base.py", line 222, in run_from_argv
    self.execute(*args, **options.__dict__)
  File ".virtualenv/lib/python2.7/site-packages/django/core/management/base.py", line 255, in execute
    output = self.handle(*args, **options)
  File ".virtualenv/lib/python2.7/site-packages/django/core/management/base.py", line 386, in handle
    return self.handle_noargs(**options)
  File ".virtualenv/lib/python2.7/site-packages/south/management/commands/syncdb.py", line 103, in handle_noargs
    management.call_command('migrate', **options)
  File ".virtualenv/lib/python2.7/site-packages/django/core/management/__init__.py", line 161, in call_command
    return klass.execute(*args, **defaults)
  File ".virtualenv/lib/python2.7/site-packages/raven/contrib/django/management/__init__.py", line 37, in new_execute
    return original_func(self, *args, **kwargs)
  File ".virtualenv/lib/python2.7/site-packages/django/core/management/base.py", line 255, in execute
    output = self.handle(*args, **options)
  File ".virtualenv/lib/python2.7/site-packages/south/management/commands/migrate.py", line 111, in handle
    ignore_ghosts = ignore_ghosts,
  File ".virtualenv/lib/python2.7/site-packages/south/migration/__init__.py", line 233, in migrate_app
    migrator.load_initial_data(target, db=database)
  File ".virtualenv/lib/python2.7/site-packages/south/migration/migrators.py", line 224, in load_initial_data
    call_command('loaddata', 'initial_data', verbosity=self.verbosity, database=db)
  File ".virtualenv/lib/python2.7/site-packages/django/core/management/__init__.py", line 161, in call_command
    return klass.execute(*args, **defaults)
  File ".virtualenv/lib/python2.7/site-packages/raven/contrib/django/management/__init__.py", line 37, in new_execute
    return original_func(self, *args, **kwargs)
  File ".virtualenv/lib/python2.7/site-packages/django/core/management/base.py", line 254, in execute
    self.validate()
  File ".virtualenv/lib/python2.7/site-packages/django/core/management/base.py", line 285, in validate
    raise CommandError("One or more models did not validate:\n%s" % error_text)
CommandError: One or more models did not validate:
auth.user: Model has been swapped out for 'app.User' which has not been installed or is abstract.

当我运行./manage.py syncdb --migrate app时,一切都正常运行,所以我不知道这里有什么。有没有人有线索?

编辑:我已安装的应用的顺序:

INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'django.contrib.messages',
    'django.contrib.admin',
    'django.contrib.webdesign',
    'django.contrib.staticfiles',
    'djcelery',
    'app',

    'babeldjango',
    'debug_toolbar',
    'template_timings_panel',
    'devserver',
    'django_extensions',
    'djrill',
    'facebook_tag',
    'gunicorn',
    'haystack',
    'markitup',
    'modeltranslation',
    'raven.contrib.django',
    'reversion',
    'rosetta',
    'sorl.thumbnail',
    'south',
    'statictastic',
    'storages',
    'twitter_tag',
    'zebra',
    'djcelery',
    'djmoney_rates'
)

编辑2 :问题似乎是由第三方应用中的迁移引起的。如果我注释掉那些有迁移的应用程序,一切都会顺利进行。我想这也是预期的,因为./manage.py migrate app工作正常,但./manage.py migrate(运行所有应用程序的迁移)却没有。在构建这些信息和跟踪时,似乎在运行第三方应用程序的迁移时,我的app模型根本不可用。

1 个答案:

答案 0 :(得分:2)

遇到同样的问题,解决了从南0.8.3迁移到南0.8.4

的问题

在这里看到解决方案:http://south.aeracode.org/ticket/1179