有没有办法在没有用户名的情况下创建用户?我试过first_name,last_name,密码和电子邮件。但是得到了一个错误:
TypeError at /accounts/register/
create_user() takes at least 2 arguments (3 given)
所以,我搜索了创建,然后发现django需要一个用户名。但我希望还有其他方法。任何人都可以指导我,如果有的话。谢谢。
答案 0 :(得分:3)
如果您不想使用自定义用户模型,则可以继承UserCreationForm
并覆盖username
字段:
from django.contrib.auth.forms import UserCreationForm
class UserCreationForm(UserCreationForm):
class Meta:
model = User
fields = ('first_name', 'last_name', 'username',)
username = forms.EmailField(label='Email', max_length=255)
def save(self, commit=True):
user = super(UserCreationForm, self).save(commit=False)
user.email = user.username
user.save()
return user
现在,除了将电子邮件字段自动设置为用户名以使其保持同步之外,您还有UserCreationForm
验证并使用用户名的电子邮件地址。这不会设置password
字段,您也需要这样做。根据需要改变,希望能让你前进。
答案 1 :(得分:1)
是的,有可能。您可以通过替换自定义用户模型来覆盖默认用户模型。以下是详细信息Substituting a custom User model。
示例代码:models.py
if django.VERSION >= (1, 5):
from django.contrib.auth.models import AbstractBaseUser
#Identifier is e-mail instead of user ID
class User(AbstractBaseUser):
email = models.EmailField(max_length=254, unique=True, db_index=True)
first_name = models.CharField(max_length=30)
last_name = models.CharField(max_length=30)
REQUIRED_FIELDS = ['email']
def __unicode__(self):
return self.email