Django覆盖默认管理员注册表格

问题描述 投票:0回答:1

我知道如何覆盖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,...

python django django-admin modelform
1个回答
0
投票

您不是在数据库中创建新的UserCompany,而只是在内存中对象,请替换

© www.soinside.com 2019 - 2024. All rights reserved.