ホームページ > バックエンド開発 > Python チュートリアル > カスタムフィールドを使用して Django ユーザーモデルを最適に拡張するにはどうすればよいですか?

カスタムフィールドを使用して Django ユーザーモデルを最適に拡張するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-12-16 13:29:14
オリジナル
262 人が閲覧しました

How to Best Extend the Django User Model with Custom Fields?

Django ユーザー モデルの拡張: 最適なアプローチ

カスタム フィールドを使用して組み込みの Django ユーザー モデルを拡張する場合、2 つの主なアプローチが際立ちます:

1. OneToOneField(User) プロパティの使用

これは推奨される Django アプローチであり、User モデルと 1 対 1 の関係を持つ新しいモデルの作成が含まれます。この「プロファイル」モデルには、ユーザーに関する追加情報を保存できます。

from django.db import models
from django.contrib.auth.models import User

class UserProfile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    # Custom fields here, e.g.:
    address = models.CharField(max_length=255)
    phone_number = models.CharField(max_length=15)
    # ...
ログイン後にコピー

2.カスタム ユーザー モデルでの置換

このアプローチには、Django ユーザー モデルを必要な変更を含むカスタム モデルで完全に置き換えることが含まれます。ただし、これは抜本的であると考えられており、次の警告が付いています。

  • User モデルに依存する他の Django 機能を破壊する可能性があります。
  • Django 認証モジュールのコピーと変更が含まれます。
  • 認証の再実装が必要になる場合があります

ユーザー名として電子メールを使用する

電子メールをユーザー名として使用するには、次のいずれかを実行できます。

  • get_username をオーバーライドします。カスタム User モデルの () メソッド。
  • set_username() メソッドを使用して、既存のユーザーのユーザー名を更新します。

例:

class CustomUser(AbstractUser):

    def get_username(self):
        return self.email

# ...
user = CustomUser.objects.get(username='john@example.com')
user.set_username('jack@example.com')
user.save()
ログイン後にコピー

以上がカスタムフィールドを使用して Django ユーザーモデルを最適に拡張するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート