在UserCreationForm中扩展用户字段

时间:2018-02-21 05:06:26

标签: django forms

我正在尝试向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类的一部分,但文档似乎也在做同样的事情......

1 个答案:

答案 0 :(得分:0)

医生说:

  

如果您的自定义用户模型是AbstractUser的简单子类,那么   你可以用这种方式扩展这些形式......

换句话说,仅当您想要添加到表单is_restaurantis_customer字段时,此功能才有效:

 class CustomerSignUpForm(UserCreationForm):

    class Meta(UserCreationForm.Meta):
        model = User
        fields = UserCreationForm.Meta.fields + ('is_restaurant',)

但在您的情况下,Customer不是AbstractUser的子类,因为此方法不适合您。作为一种解决方法,您可以尝试在此answer中建议的同时使用两个单独的表单。