Python 在Django中迁移自定义用户时出现异常

Python 在Django中迁移自定义用户时出现异常,python,django,Python,Django,我需要为我的应用程序创建一个自定义用户,并严格按照文档中的说明,在我的settings.py中使用AUTH\u User\u MODEL='core.MyUser'。但是,当我创建一个新数据库时,删除所有迁移文件夹并再次运行python manage.py migrate,它会给我这样的异常 File "manage.py", line 22, in <module> execute_from_command_line(sys.argv) File "/Users/b

我需要为我的应用程序创建一个自定义用户,并严格按照文档中的说明,在我的
settings.py
中使用
AUTH\u User\u MODEL='core.MyUser'
。但是,当我创建一个新数据库时,删除所有迁移文件夹并再次运行
python manage.py migrate
,它会给我这样的异常

  File "manage.py", line 22, in <module>
    execute_from_command_line(sys.argv)
  File "/Users/bubuzzz/Projects/python/apps/lib/python2.7/site-packages/django/core/management/__init__.py", line 367, in execute_from_command_line
    utility.execute()
  File "/Users/bubuzzz/Projects/python/apps/lib/python2.7/site-packages/django/core/management/__init__.py", line 359, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/Users/bubuzzz/Projects/python/apps/lib/python2.7/site-packages/django/core/management/base.py", line 294, in run_from_argv
    self.execute(*args, **cmd_options)
  File "/Users/bubuzzz/Projects/python/apps/lib/python2.7/site-packages/django/core/management/base.py", line 345, in execute
    output = self.handle(*args, **options)
  File "/Users/bubuzzz/Projects/python/apps/lib/python2.7/site-packages/django/core/management/commands/makemigrations.py", line 173, in handle
    migration_name=self.migration_name,
  File "/Users/bubuzzz/Projects/python/apps/lib/python2.7/site-packages/django/db/migrations/autodetector.py", line 47, in changes
    changes = self._detect_changes(convert_apps, graph)
  File "/Users/bubuzzz/Projects/python/apps/lib/python2.7/site-packages/django/db/migrations/autodetector.py", line 132, in _detect_changes
    self.old_apps = self.from_state.concrete_apps
  File "/Users/bubuzzz/Projects/python/apps/lib/python2.7/site-packages/django/db/migrations/state.py", line 180, in concrete_apps
    self.apps = StateApps(self.real_apps, self.models, ignore_swappable=True)
  File "/Users/bubuzzz/Projects/python/apps/lib/python2.7/site-packages/django/db/migrations/state.py", line 242, in __init__
    self.render_multiple(list(models.values()) + self.real_models)
  File "/Users/bubuzzz/Projects/python/apps/lib/python2.7/site-packages/django/db/migrations/state.py", line 277, in render_multiple
    model.render(self)
  File "/Users/bubuzzz/Projects/python/apps/lib/python2.7/site-packages/django/db/migrations/state.py", line 559, in render
    body,
  File "/Users/bubuzzz/Projects/python/apps/lib/python2.7/site-packages/django/db/models/base.py", line 153, in __new__
    raise TypeError("%s cannot proxy the swapped model '%s'." % (name, base_meta.swapped))
TypeError: Customer cannot proxy the swapped model 'core.MyUser'.

简而言之,如何在Django 1.10中创建自定义用户?示例代码可在此处查看

您不应删除迁移文件夹。如果您这样做,django将不会为您进行迁移。在您的核心应用程序中创建migrations文件夹,在其中创建一个空的
\uu init\uuuuupy.py
文件,删除db.sqlite3文件,运行./manage.py makemigrations,然后Migration应该可以正常工作。

Mehdi Pourfar的答案是正确的。如果您想知道更多详细信息,请

通过运行makemigrations,您告诉Django您已经对您的模型进行了一些更改(在本例中,您已经进行了一些新的更改),并且希望将更改存储为迁移

迁移是Django存储对模型(以及数据库模式)的更改的方式——它们只是磁盘上的文件。如果愿意,您可以阅读新模型的迁移;这是polls/migrations/0001_initial.py文件。别担心,我们不希望每次Django制作一个文件时都阅读它们,但它们被设计为可人工编辑的,以防您需要手动调整Django如何更改内容

告诉django您要进行迁移的应用程序都可以解决您的问题。它将自动创建一个文件夹调用迁移保留您模型的记录

python manage.py makemigrations core

我不确定之前的django,但是在1.10中,我删除了migrations文件夹,django将再次创建它。mirations脚本仍能正常工作,如您在我的问题中所看到的,请让我查看完整的回溯OK,我认为我的环境有问题。我创建了一个新项目并制作了新应用程序,它还将提供客户迁移脚本。最好删除环境,从头开始做所有事情。如果您不使用virtualenv,请使用virtualenv。@Thai TranI我认为您弄乱了virtualenv。尝试创建一个新的,然后重新测试。没有必要启动新项目。请查看我对Mehdi回答的评论。请检查我的示例项目以查看problem@ThaiTran,我下载了你的代码并在我的计算机上运行,如果你没有指定要进行迁移的应用程序,文件夹将不会自动创建。请删除迁移中的django_迁移表和文件,然后运行python manage.py makemigrations core will work.hmm,这很奇怪。我只是用migrations文件夹再次推送clean文件夹(我已经删除了db)
python manage.py makemigrations core
仍然给出异常。目前您使用的是哪个操作系统和django版本?我使用的是最新的django和osx,但我不认为这有什么关系,您是否删除了db.sqlite3?我所做的只是
下载整个项目
,然后
删除db.sqlite3
,然后运行
python manage.py makemigrations core
python manage.py makemigrations core