Django(Django Unleashed)のチュートリアルの本を読んでいますが、新しいバージョンのDjango(私はamazonでもこのchaperの問題について読んだことがある)。だから、この本の将来の生徒には、私はこれをオープンに、本との関係で尋ねます。Django Unleashed Cp.22:FieldError:ユーザーに不明なフィールド(ユーザ名)が指定されています
カスタムユーザーモデルを作成するには、「username」フィールドを持たないユーザーモデルが推奨されます。このエラーがmakemigrations
中にoccursd:
django.core.exceptions.FieldError: Unknown field(s) (username) specified for User
StackOverflowの上でこのエラーに関する他のトピックがあり、彼らはdjango.contrib.auth.admin.UserAdmin
は、「ユーザ名」は指定されたため、属性がフォームUserAdmin
を継承するクラスにadd_fieldsets
と呼ばれる追加提案する必要があることを示唆しています。私の質問(私は他の問題にぶつかって本のコードより先に進む必要はありません)...ユーザー名を特定せずに、管理クラスなしでカスタムのユーザープロファイルを作成することは可能ですか? UserManagerの
Userモデル
class User(AbstractBaseUser, PermissionsMixin):
email = models.EmailField('email adress', max_length=254, unique=True)
is_staff = models.BooleanField('staff status', default=False)
is_active = models.BooleanField('active', default=False)
name = models.CharField(max_length=255)
joined = models.DateTimeField("Date Joined", auto_now_add=True)
USERNAME_FIELD = 'email'
objects = UserManager()
def __str__(self):
return self.email
def get_absolute_url(self):
return self.profile.get_absolute_url()
def get_full_name(self):
return self.name
def get_short_name(self):
return self.profile.name
class UserManager(BaseUserManager):
use_in_migrations = True
def _create_user(
self, email, password, **kwargs):
email = self.normalize_email(email)
is_staff = kwargs.pop('is_staff', False)
is_superuser = kwargs.pop(
'is_superuser', False)
user = self.model(
email=email,
is_active=True,
is_staff=is_staff,
is_superuser=is_superuser,
**kwargs)
user.set_password(password)
user.save(using=self._db)
return user
def create_user(
self, email, password=None,
**extra_fields):
return self._create_user(
email, password, **extra_fields)
def create_superuser(
self, email, password,
**extra_fields):
return self._create_user(
email, password,
is_staff=True, is_superuser=True,
**extra_fields)
と私はあなたがAbstractUser
の代わりを使用する必要があると思うエラー
あなたは、問題のコードを提供する必要がある「[本の]コードに問題があると思う」場合。ここの読者全員がその本をそのテーブルに持っているわけではありません。それ以外の場合は、 "本のコードとの関連で"あなたの質問に答えるのは少し難しいです。 – Risadinha
ここには、エラーメッセージが表示される場所のプロジェクト全体の分岐があります。 https://github.com/jambonrose/DjangoUnleashed-1.8/tree/19560085fc9e5d902c20968aed1293eca39dc5e8 –