2016-04-26 16 views
0

[管理者ユーザーのカスタマイズ] [1](djangoドキュメントの一部)からサンプルコード全体をコピーしましたが、実行するとエラーは出ませんが、ユーザーを追加すると、djangoは次のエラーが出てきます。 私はこの例のコードを変更しておらず、その文書にフォローアップを設定しています。 フォローアップリンクは一例です: https://docs.djangoproject.com/en/1.8/topics/auth/customizing/#a-full-exampleDjangoドキュメントのサンプルコードでエラーが発生しました

エラー:

IntegrityError at /admin/app01/myuser/add/ 
NOT NULL constraint failed: app01_myuser.last_login 
Request Method: POST 
Request URL: http://127.0.0.1:8000/admin/app01/myuser/add/ 
Django Version: 1.8.5 
Exception Type: IntegrityError 
Exception Value:  
NOT NULL constraint failed: app01_myuser.last_login 
Exception Location: /Library/Python/2.7/site-packages/django/db/backends/sqlite3/base.py in execute, line  318 
+0

あなたの目標は何ですか? ?あなたはそのコードを変更しましたか? –

+0

はいこれを解決するにはもっと情報が必要です。あなたのデータベースが最新であることを確認してください(あなたの移行を行います)1.7 - > 1.8のlast_loginフィールドの制約が変更されましたが、あなたのアプリには影響しないかもしれませんが、わかりません! django.contrib.auth.modelsからユーザをインポートしていることを確認してください。 –

+0

私はdjangoドキュメント(django(1.8)は正常に動作しています)から新しいプロジェクトを使用しようとしましたが、adminでユーザーを保存するとエラーが出てきます。 – scott

答えて

0

あなたはDjangoのサンプルコードとそれが表すテーブルの定義から使用しているカスタム・ユーザー・モデル間の相違が明確にありますデータベース。エラーは、テーブルのlast_loginカラムにNOT NULLという制約があり、そのフィールドがNULLのユーザを作成しようとしているというデータベースからのものです。

お客様のMyUserモデルには、AbstractBaseUserから継承されたlast_loginフィールドが含まれています。ここでAbstractBaseUserクラスからlast_loginの定義は次のとおりです。last_loginのその定義に基づいて

last_login = models.DateTimeField(_('last login'), blank=True, null=True) 

NOT NULL制約は、データベースに存在してはなりません。

移行を実行してデータベースが最新であることを確認してください。移行の実行中に発生したエラーを監視します。

app01の移行コードをチェックして、最初にNOT NULLという制約を付けていつ、なぜapp01_myuserを作成したかを確認することもできます。

関連する問題