【问题标题】:Extending User fields in UserCreationForm在 UserCreationForm 中扩展用户字段
【发布时间】:2018-02-21 05:06:26
【问题描述】:

我正在尝试将一些自定义字段添加到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 类的一部分,但文档似乎在做同样的事情......

【问题讨论】:

    标签: django forms


    【解决方案1】:

    文档说:

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

    换句话说,这仅在您想要添加到表单is_restaurantis_customer 字段时才有效:

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

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

    【讨论】:

    • 你好,非常感谢,我正在寻找它不是子类化 AbstractUser 的事实。我将尝试您提供的答案链接中的方法,再次感谢!
    猜你喜欢
    • 2013-04-18
    • 2020-06-29
    • 2012-08-08
    • 2018-03-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-08
    • 1970-01-01
    • 2016-04-17
    相关资源
    最近更新 更多