我知道如何覆盖UserCreationForm
,但它仅对用户有效,对管理员注册无效。
这是我的情况...
我修改了默认用户模型,现在它具有字段user_company
,不能为空:
class User(AbstractUser):
user_company = models.ForeignKey("UserCompany", on_delete=models.CASCADE)
我已覆盖UserCreationForm:
from django.contrib.auth import get_user_model
from django.contrib.auth.forms import UserCreationForm
class UserRegisterForm(UserCreationForm):
class Meta(UserCreationForm.Meta):
model = get_user_model()
def save(self, commit=True):
user_company = UserCompany() ## create a new company and assign it to the new user
user_company.save()
user = super(UserRegisterForm, self).save(commit=False)
user.user_company_id = user_company.pk
if commit:
user.save()
return user
所有这些对于普通用户来说都很好。但是,当我尝试在控制台中输入python manage.py createsuperuser
时,输入管理员用户名和密码后,出现错误,
字段
user_company
不能为空
我知道如何覆盖UserCreationForm,但它仅对用户有效,而对管理员注册无效。这是我的情况...我修改了默认的用户模型,现在有一个字段user_company,...
您不是在数据库中创建新的UserCompany,而只是在内存中对象,请替换