[解決済み] get_user_model と settings.AUTH_USER_MODEL を使った Django の違い
質問
Django ドキュメントを読んでいます。
get_user_model()
User を直接参照する代わりに、 django.contrib.auth.get_user_model() を使ってユーザーモデルを参照する必要があります。 モデルを参照する必要があります。このメソッドは このメソッドは現在アクティブな User モデルを返します - もしカスタム User モデルが指定されていればそのモデル、そうでなければ User を返します。 が指定されていればカスタム User モデル、そうでなければ User を返します。
Userモデルに対して外部キーまたは多対多のリレーションを定義する場合、AUTH_USER_MODELを使用してカスタムモデルを指定する必要があります。 モデルへの外部キーまたは多対多のリレーションを定義する場合、AUTH_USER_MODEL設定を使ってカスタムモデルを指定する必要があります。 設定を使用します。
上記の文章で混乱しています。こうすればいいのでしょうか。
author = models.ForeignKey(settings.AUTH_USER_MODEL)
またはこれ...
author = models.ForeignKey(get_user_model())
どちらも動作しているようです。
どのように解決するのですか?
使用方法
settings.AUTH_USER_MODEL
を使うと、すべてのアプリがロードされるまで、実際のモデルクラスの取得を遅らせます。
get_user_model
は、アプリが初めてインポートされた時点でモデルクラスの取得を試みます。
get_user_model
は
User
モデルがすでにアプリキャッシュにロードされていることを保証することはできません。あなたの特定の設定ではうまくいくかもしれませんが、それはヒットアンドミスのシナリオです。いくつかの設定を変更した場合(たとえば
INSTALLED_APPS
の順序など) を変更すると、インポートがうまくいかず、デバッグにさらに時間がかかる可能性があります。
settings.AUTH_USER_MODEL
は外部キーモデルとして文字列を渡し、この外部キーがインポートされた時点でモデルクラスの検索に失敗した場合、すべてのモデルクラスがキャッシュにロードされるまで検索が遅延されます。
関連
-
[解決済み] Django: 外部キーの逆アクセッサが衝突する
-
[解決済み] 関数内でグローバル変数を使用する
-
[解決済み] モジュールの関数名(文字列)を使って、モジュールの関数を呼び出す。
-
[解決済み] Djangoのバージョンを確認する方法
-
[解決済み】forループを使った辞書の反復処理
-
[解決済み】Djangoでnull=Trueとblank=Trueの違いは何ですか?
-
[解決済み] Django のテストデータベースをメモリ上だけで動作させるには?
-
[解決済み] ファブリック経由でデプロイユーザとしてvirtualenvを有効化する
-
[解決済み] virtualenvsはどこに作成するのですか?
-
[解決済み] Pythonでリストが空かどうかをチェックする方法は?重複
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] タプルのリストを複数のリストに変換するには?
-
[解決済み] Pythonのインスタンス変数とクラス変数
-
[解決済み] Python 3でバイナリデータを標準出力に書き込むには?
-
[解決済み] データフレームをソートした後にインデックスを更新する
-
[解決済み] DataFrameに日付間の日数カラムを追加する pandas
-
[解決済み] 範囲指定された浮動小数点数のランダムな配列を生成します。
-
[解決済み] サブフォルダからのインポートモジュール
-
[解決済み] subprocess.run()の出力を抑制またはキャプチャするには?
-
[解決済み] Python Logging でログメッセージが2回表示される件
-
[解決済み] virtualenv の `--no-site-packages` オプションを元に戻す。