1

私は自分の User モデルをあまり気にせずに Django Web アプリケーションを作成してきました。提供されたモデルは優れていましたが、どうにかしてカスタマイズできるようにしたいことに気付きました。

カスタム ユーザー モデルをゼロから作成するのは非常に簡単に見えますが、既存のユーザーを維持しながらモデルに移行するのは少し難しく、多くの問題を抱えています。特別なパッケージを使用し、私の正確な状況 (Django 1.8、Python 3.4) の段階的な手順が記載されているこのガイドを見つけました。

準備手順の 1 つは、

プロジェクト (サードパーティ ライブラリを含む) のどこでも、"auth.User" と django.contrib.auth.models.User ではなく、AUTH_USER_MODEL と django.contrib.auth.get_user_model() を使用していることを確認する必要があります。

私のプロジェクトはそれほど複雑ではありません.User モデルへの唯一の参照は、ForeignKeys と User オブジェクトを取得するいくつかの行にあります。

django.contrib.auth.get_user_model() はどこで使用すればよいですか? 私の印象では、ForeignKeys は settings.AUTH_USER_MODEL と任意のランタイム操作を使用する必要があります (たとえば、 でobj = User.objects.get(<criteria>)設定Userget_user_model()ます。それは正しいですか?

現在、AUTH_USER_MODEL 設定は次のようになっています。

AUTH_USER_MODEL = User

django.contrib.auth.models.Userの上部に をインポートして、中間ステップとしてsettings.py.

設定を使用するようにモデルを切り替えようとしました:

class League(models.Model):
  name = models.CharField(max_length=100)
  users = models.ManyToManyField(settings.AUTH_USER_MODEL)

ただし、サーバーを起動すると、エラーが発生し続けますsettings.py

    raise ImproperlyConfigured("The SECRET_KEY setting must not be empty.")
django.core.exceptions.ImproperlyConfigured: The SECRET_KEY setting must not be empty.

ここで何が間違っていますか?SECRET_KEY の設定が空ではないので、設定に別のエラーがあると思います。

4

1 に答える 1

3

デフォルトからカスタムユーザーへの切り替えで現在どこにいるのか少し不明ですが、ドキュメントがここで言うように、次のように設定するAUTH_USER_MODEL必要があります。

AUTH_USER_MODEL = 'auth.User'

モデルを直接インポートせずに文字列として。 'auth.User'がデフォルト設定なので、コードでデフォルト ユーザーを使用する場合は、そのように設定するだけです。切り替える準備ができたら、アプリ名とモデルに変更します。'my_app.CustomUser'

SECRET_KEYsettings.py. の上部にある django.contrib.auth.models.User をインポートしようとしているためにエラーが発生しているため、設定ファイルの前に django ライブラリの他の部分をインポートしていますが、設定ファイル最初にロードされるはずです。

于 2016-02-19T18:11:56.057 に答える