2016-09-25 8 views
0

私のアプリケーションのカスタムユーザーを作成する必要があります。のAUTH_USER_MODEL = 'core.MyUser'が正確にsettings.pyにあります。 customerのための移行スクリプトがあるため、そこにある理由は、私は、新しいデータベースを作成するときただし、すべての移行のフォルダを削除して、再度python manage.py migrateを実行し、それは私がわからないこのDjangoでカスタムユーザーを移行すると例外が発生する

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'. 

のような例外を提供します私のアプリでは、私はすでにそれを削除したにもかかわらず、Customerモデルを持っていました。

次に、移行をテストして実行しようとする新しいdjangoプロジェクトを作成しました。驚いたことに、私はまた、顧客の移行手順を参照してくださいが、それは正常に実行されます。

Applying auth.0008_alter_user_username_max_length... OK 
    Applying auth.0009_customer... OK 
    Applying auth.0010_delete_customer... OK 
    Applying sessions.0001_initial... OK 

要するに、Django 1.10でカスタムユーザーを作成するにはどうすればよいですか?例コードはここに表示されますhttps://github.com/bubuzzz/django-customer-swap-exception

答えて

1

移行フォルダは削除しないでください。あなたがそれを行う場合、djangoはあなたのための移行を行いません。あなたのコアアプリケーションにマイグレーションフォルダを作成し、その中に空の__init__.pyファイルを作成し、db.sqlite3ファイルを削除し、./manage.py makemigrationsを実行してから、migrateが完璧に動作するはずです。

+0

私は以前のdjangoではわかりませんが、1.10でmigrationsフォルダを削除すると、djangoは再びそれを作成します。あなたが私の質問で見たように、写本のスクリプトはまだ 'auth.0009_customer'の働きをしています –

+0

この写真を見て、ステップバイステップに従ってください: https://i.imgsafe.org/77fae8fcdf.png –

+0

それは私がhttps ://i.imgsafe.org/78099650c6.png –

0

あなたは、あなたがこのような場合には、あなたがしました(あなたのモデルにいくつかの変更を加えたジャンゴを言っているmakemigrationsを実行することにより、より詳細

を知りたいcorrect.IfメフディPourfarの答えがあります変更をマイグレーションとして保存することをお勧めします。

マイグレーションは、Djangoがモデル(したがってデータベーススキーマ)に変更を保存する方法です。ディスク上のファイルだけです。必要に応じて新しいモデルの移行を読むことができます。 polls/migrations/0001_initial.pyというファイルです。 Djangoが作成するたびにそれらを読む必要はありませんが、手動でDjangoの変更方法を調整したい場合には人間が編集できるように設計されています。

あなたがマイグレーションをしたいアプリケーションにすべてあなたの問題を修正するよう伝えてください。自動的にフォルダコールのマイグレーションが作成され、モデルのレコードが保持されます。

python manage.py makemigrations core 
+0

Mehdiの答えに対するコメントを確認してください。私のサンプルプロジェクトをチェックして問題を確認してください –

+0

@Thai Tran、私はあなたのコードをダウンロードして、コンピュータ上で動かしました。あなたがmigrations.Deleteするあなたのdjango_migrationsテーブルとファイルを特定したいのでなければフォルダは自動的に作成されません次に、python manageを実行します。py makemigrationsコアが動作します。 – Windsooon

+0

うーん、それは変だ。私はmigrationsフォルダ(私はすでにdbを削除した)で再びクリーンフォルダをプッシュします。 'python manage.py makemigrations core'でも例外はあります。現在どのOSとdjangoのバージョンを使用していますか? –

関連する問題