0

私はDjango 1.9.2をPython 2.7.3、残りのフレームワーク、およびallauthで使用しています。私はdjango.contrib.auth.models.AbstractUserから拡張しており、AbstractUserからメールフィールドを取得し、他のフィールドのデフォルトとして使用したい:

from django.contrib.auth.models import AbstractUser


class MyUser(AbstractUser):

    def get_email(self):
        return self.email

    email_from_work = models.EmailField(default=get_email())

しかし、このコードを使用すると、次のエラーが発生します。

File "./behnowapp/models.py", line 48, in MyUser
    email_from_work = models.EmailField(default=get_email())
TypeError: get_email() takes exactly 1 argument (0 given)

メール属性を取得する方法は何ですか?

4

2 に答える 2

1

AbstractUserこの目的のために延長することはできません。このために拡張AbstractBaseUserします。これらの機能を使用する場合は、継承PermissionsMixinします。また、カスタム マネージャを拡張して作成しBaseUserManagerます。

例 -

class MyUser(AbstractBaseUser, PermissionsMixin):

email = models.EmailField(max_length=255, unique=True)


objects = MyUserManager()

USERNAME_FIELD = 'email'
REQUIRED_FIELDS = []  # Fields necessary for making a user

def get_email(self):
    return self.email
于 2016-03-18T19:52:08.143 に答える