私はdjango 1.10.5を使用して認証システムを作成しています。私はユーザ名の代わりに電子メールをユニークな識別子として使用しています。私はこれらの命令私は私の設定でカスタムユーザーモデルを追加/Self/register/noにそのようなテーブルのOperationalErrorを修正する方法:auth_user
from django.contrib.auth.models import AbstractUser, BaseUserManager
from django.db import models
from django.utils.translation import ugettext_lazy as _
class UserManager(BaseUserManager):
use_in_migrations = True
def _create_user(self, email, password, **extra_fields):
if not email:
raise ValueError('THE email is not set')
email = self.normalize_email(email)
user = self.model(email=email, **extra_fields)
user.set_password(password)
user.save(using=self._db)
return user
def create_user(self, email, password=None, **extra_fields):
extra_fields.setdefault('is_staff', False)
extra_fields.setdefault('is_superuser', False)
return self._create_user(email, password, **extra_fields)
def create_superuser(self, email, password, **extra_fields):
extra_fields.setdefault('is_staff', True)
extra_fields.setdefault('is_superuser', True)
if extra_fields.get('is_staff') is not True:
raise ValueError('Superuser must have is_staff=True.')
if extra_fields.get('is_superuser') is not True:
raise ValueError('Superuser must have is_superuser=True.')
return self._create_user(email, password, **extra_fields)
class User(AbstractUser):
username = None
email = models.EmailField(_('email address'), unique = True)
USERNAME_FIELD = 'email'
REQUIRED_FIELDS = []
objects = UserManager()
新しいユーザーモデルのための私の顧客ユーザモデルとカスタム・ユーザー・マネージャを作成し
を追いました文書:AUTH_USER_MODEL = 'Identities.User'
私はその後、私は、この新しいユーザーモデルで新しいアカウントを作成しようとしたとき、私はしかし、
migrate
とmakemigrations
を使用して、私の新しいモデルを作成した行政文書from django.contrib import admin from django.contrib.auth.admin import UserAdmin as DjangoUserAdmin from django.utils.translation import ugettext_lazy as _ # Register your models here. from .models import User @admin.register(User) class UserAdmin(DjangoUserAdmin): # Define admin model for custom User model with no email field fieldsets = ( (None, {'fields': ('email', 'password')}), (_('Personal info'), {'fields': ('first_name', 'last_name')}), (_('Permissions'), {'fields': ('is_active', 'is_staff', 'is_superuser', 'groups', 'user_permissions')}), (_('Important dates'), {'fields': ('last_login', 'date_joined')}), ) add_fieldsets = ( (None, { 'classes': ('wide',), 'fields': ('email', 'password1', 'password2'), }) ) list_display = ('email', 'first_name', 'last_name', 'is_staff') search_fields = ('email', 'first_name', 'last_name') ordering = ('email',)
に私の新しいユーザーモデルを登録私は
OperationalError /セルフ/登録/いいえ、そのようなテーブルでこのエラーを得続ける:AUTH_USER要求 方法:POSTリクエストURLを:http://127.0.0.1:8000/Self/register/ジャンゴ バージョン:1.10.5例外の種類:OperationalError例外値:なし 例えば表:
上記例外(そのようなテーブル:AUTH_USER)AUTH_USER
メッセージはまた、これを含有するました
:それは私がこのアプリケーションファイルに指示します。 次の例外の直接の原因
レジスタの/Users/iivri.andre/Identityプラットフォーム/アプリ/セルフ/アイデンティティ/ views.py
form.save()
これは、レジスタビューのコードです:
def register(request): if request.method == 'POST': form = CreateAccountForm(request.POST) if form.is_valid(): form.save() return redirect('/Self') else: return redirect(reverse('Identities:iivri')) else: form = CreateAccountForm() args = {'form':form} return render(request, 'Identities/create_account.html', args)
更新
これは私のフォームドキュメント内のコードです:
from django import forms from django.contrib.auth.models import User from django.contrib.auth.forms import UserCreationForm, UserChangeForm # Create custom user registration class CreateAccountForm(UserCreationForm): email = forms.EmailField(required=True) class Meta: model = User fields = ( 'first_name', 'last_name', 'email', 'password1', 'password2' ) def save(self, commit = True): user = super(CreateAccountForm, self).save(commit = False) user.first_name = self.cleaned_data['first_name'] user.last_name = self.cleaned_data['last_name'] user.email = self.cleaned_data['email'] if commit: user.save() return user class UpdateAccountForm(UserChangeForm): # exclude certain elements of the form using *fields and *exclude class Meta : # specifiy model being used model = User # list fields to include fields = ( 'email', 'first_name', 'last_name', 'password' )
私はすでにThis、This、およびThisを試してみましたし、私はまだエラーを取得しています。
どうすればこの問題を解決できますか。
from django.contrib.auth import get_user_model class CreateAccountForm(UserCreationForm): email = forms.EmailField(required=True) class Meta: model=get_user_model()
使用
model=get_user_model()
:カスタム・ユーザー・モデルを作成しましたが、あなたはまだDjangoのデフォルトのユーザーモデルfrom django.contrib.auth.models import User
を使用しようとしているが、
「CreateAccountForm」のコードも表示してください。 –
@AamirAdnan私の 'CreateAccountForm'クラスを含めるように更新しました –