[解決済み] Managerは使用できません。Userは'pet.Person'に交換されました。
2023-01-22 17:54:16
質問
私は django のデフォルトのユーザーモデルをかなり長い間使っていますが、もしそれをさらに強化する必要があるなら、私は django 1.5 で独自のカスタムユーザーモデルを作成しなければならないことに気づきました。
私は自分のカスタムユーザモデルを作成し、ユーザがサインインできるようにする関数を持っています。 私のカスタムユーザモデルは、私の関数と互換性がないと思います。なぜなら、それは私が request.user を行うことを許さないからです。どのように私はrequest.userを再び使用できるようにこれを修正することができますか?
ビュー
def LoginRequest(request):
form = LoginForm(request.POST or None)
if request.user.is_authenticated():
username = User.objects.get(username=request.user)
url = reverse('world:Profile', kwargs = {'slug': person.slug})
return HttpResponseRedirect(url)
if request.POST and form.is_valid():
user = form.authenticate_user()
login(request, user)
username= User.objects.get(username=request.user)
person = Person.objects.get(user=request.user)
url = reverse('world:Profile', kwargs = {'slug': person.slug})
return HttpResponseRedirect(url)
return render(request, 'login.html',{'form': form})
モデル
class PersonManager(BaseUserManager):
def create_user(self, email,date_of_birth, username,password=None,):
if not email:
msg = 'Users must have an email address'
raise ValueError(msg)
if not username:
msg = 'This username is not valid'
raise ValueError(msg)
if not date_of_birth:
msg = 'Please Verify Your DOB'
raise ValueError(msg)
user = self.model(
email=PersonManager.normalize_email(email),username=username,date_of_birth=date_of_birth)
user.set_password(password)
user.save(using=self._db)
return user
def create_superuser(self,email,username,password,date_of_birth):
user = self.create_user(email,password=password,username=username,date_of_birth=date_of_birth)
user.is_admin = True
user.is_staff = True
user.is_superuser = True
user.save(using=self._db)
return user
class Person(AbstractBaseUser, PermissionsMixin):
email = models.EmailField(verbose_name='email address',max_length=255,unique=True,db_index=True,)
username = models.CharField(max_length=255, unique=True)
date_of_birth = models.DateField()
USERNAME_FIELD = 'email'
REQUIRED_FIELDS = ['username', 'date_of_birth',]
is_active = models.BooleanField(default=True)
is_admin = models.BooleanField(default=False)
is_staff = models.BooleanField(default=False)
objects = PersonManager()
def get_full_name(self):
return self.email
def get_short_name(self):
return self.email
def __unicode__(self):
return self.email
どのように解決するのですか?
問題点は
User
を参照していることです。
django.contrib.auth.models.User
となり、今度は
Custom User
pet.Person
にあると仮定して
settings.py
AUTH_USER_MODEL = "pet.Person"
を定義する必要があります。
User
と共に
Custom User
モデルで、これを
get_user_model
を使用するファイルの先頭で
User
from django.contrib.auth import get_user_model
User = get_user_model()
では
Custom User
のモデルで、問題が修正されました。
関連
-
Django2.2エラー - AttributeError: ''str'' オブジェクトに ''decode'' 属性がない。
-
6.5、Django - モデルでJSONFieldを使用してJSONフィールドでMySQLテーブルを作成する
-
[解決済み] NoReverseMatchエラーとは何ですか、またどのように修正しますか?
-
[解決済み] Django で完全な/絶対的な URL (ドメイン付き) を取得するにはどうすればよいですか?
-
[解決済み] Django テンプレート内で現在の URL を取得する方法は?
-
[解決済み] Django South - テーブルはすでに存在する
-
[解決済み] Django ORM のクエリセットに対応する SQL クエリを表示するには?
-
[解決済み] models.pyでDjangoの設定変数を参照するには?
-
[解決済み] Djangoのvalues()の項目名を変更する方法は?
-
[解決済み] django : select_related と get_object_or_404 を一緒に使用する。
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
Djangoの基本(16)。テンプレートタグの紹介とそのカスタマイズ方法
-
Django ForeignKey逆引きクエリにおけるfilterと_setの効率比較
-
[解決済み] Django のビューで 2 つ以上のクエリセットを結合するにはどうすればよいですか?
-
[解決済み] pipと要件ファイルを使って、特定のパッケージをアップグレードするにはどうすればよいですか?
-
[解決済み] Django のカスタムフィールドで User モデルを拡張する
-
[解決済み] Django で現在ログインしているユーザのユーザ ID を取得する方法は?
-
[解決済み] Django が ManyToMany リレーションシップからオブジェクトを取り除く
-
[解決済み] Django: テンプレート内からセッション変数にアクセスする?
-
[解決済み] egg_infoエラーでpipからインストールできない
-
[解決済み] Django の DoesNotExist 例外はどのようにインポートしますか?