我有一个自定义的用户模型:
class User(AbstractUser):
phone_regex = RegexValidator(regex=r'^\+?1?\d{9,15}$', message="Phone number must be entered in the format: '+999999999'. Up to 15 digits allowed.")
phone_number = models.CharField(validators=[phone_regex], max_length=17, blank=False, null=False) # validators should be a list
email = models.EmailField(blank=False, null=False)
points = models.PositiveIntegerField(default=0)
REQUIRED_FIELDS = ['phone_number', 'email']
objects = UserManager()
使用UserManager:
class UserManager(BaseUserManager):
def create_user(self, username, email, phone_number, password):
if not username:
raise ValueError('Users must have a username')
if not email:
raise ValueError('Users must have an email address')
if not phone_number:
raise ValueError('Users must have a phone_number')
user = self.model(
username,
phone_number,
email=self.normalize_email(email)
)
user.set_password(password)
user.save(using=self._db)
return user
def create_superuser(self, username, email, phone_number, password):
if not username:
raise ValueError('Users must have a username')
if not email:
raise ValueError('Users must have an email address')
if not phone_number:
raise ValueError('Users must have a phone_number')
user = self.create_user(
username,
phone_number,
email=self.normalize_email(email)
)
user.set_password(password)
user.is_superuser = True
user.save(using=self._db)
return user
我正在使用allauth来注册用户,但是当我在/rest-auth/registration (POST)中注册一个新用户时,字段仍然是默认的(用户名、电子邮件、密码1、密码2),而不是添加phone_number之类的字段。我该如何允许更多(或删除一些)字段来注册新用户?
=== 编辑 ===
另外,在我的settings.py中有以下内容:
AUTH_USER_MODEL = 'userTest.User'
ACCOUNT_SIGNUP_FORM_CLASS = 'userTest.forms.RegisterForm'
在forms.py中有一个仅用于测试的表单,但似乎无法正常工作:
并在forms.py中添加了一个仅用于测试的表单,但它似乎无法正常工作:
class RegisterForm(forms.Form):
phone_number = forms.CharField(label='Phone Number', max_length=17)
first_name = forms.CharField()
def signup(self, request, user):
user.phone_number = self.cleaned_data['phone_number']
user.first_name = self.cleaned_data['first_name']
user.save()