我正在尝试向user
添加一些自定义字段,并扩展UserCreationForm
,以便在创建用户时添加这些字段。我正在关注文档但是当我尝试加载页面来创建用户时,我收到错误:Unknown field(s) (username) specified for Customer
。
我关注的文档:Custom User and Auth Forms
models.py
class User(AbstractUser):
is_restaurant = models.BooleanField(default=False)
is_customer = models.BooleanField(default=False)
class Customer(models.Model):
user = models.OneToOneField(User, primary_key=True, on_delete=models.CASCADE)
address = models.CharField(max_length=200)
def __str__(self):
return self.user.get_full_name()
forms.py
class CustomerSignUpForm(UserCreationForm):
class Meta(UserCreationForm.Meta):
model = Customer
fields = UserCreationForm.Meta.fields + ('address',)
我了解username
不是Customer
类的一部分,但文档似乎也在做同样的事情......
答案 0 :(得分:0)
医生说:
如果您的自定义用户模型是AbstractUser的简单子类,那么 你可以用这种方式扩展这些形式......
换句话说,仅当您想要添加到表单is_restaurant
或is_customer
字段时,此功能才有效:
class CustomerSignUpForm(UserCreationForm):
class Meta(UserCreationForm.Meta):
model = User
fields = UserCreationForm.Meta.fields + ('is_restaurant',)
但在您的情况下,Customer
不是AbstractUser
的子类,因为此方法不适合您。作为一种解决方法,您可以尝试在此answer中建议的同时使用两个单独的表单。