【问题标题】:How do I add custom field in to model that extends AbstractUser如何将自定义字段添加到扩展 AbstractUser 的模型中
【发布时间】:2021-07-24 14:30:10
【问题描述】:

我正在尝试创建我自己的名为 Customer 的 User 类,它扩展了 AbstractUser 模型并有一个名为 address 的附加字段。当我注册时,我看到用户已在 Django 管理中创建,并且所有字段(用户名、名字、姓氏和电子邮件)都在 django 管理屏幕中看到,但我在“地址”字段中看不到任何值。我如何知道地址是否正在保存以及如何在管理站点中显示?

下面是我的 models.py 代码

class Customer(AbstractUser):
    username = models.CharField(unique=True, max_length=20)
    deladdress = models.CharField(max_length=100)

views.py

def signupPage(request):
    signForm = CreateCustomer()
    if request.method=='POST':
        signForm = CreateCustomer(request.POST)
        if signForm.is_valid():
            signForm.save()

    return render(request, 'trial_app/signup.html', {'signForm':signForm})

forms.py

class CreateCustomer(UserCreationForm):
    address = forms.CharField(widget=forms.Textarea)
    class Meta:
        model = Customer
        fields = ['username','first_name','last_name','email','address','password1','password2']

    def save(self, commit=True):
        user = super(CreateCustomer, self).save(commit=False)
        user.address = self.cleaned_data["address"]
        if commit:
            user.save()
        return user

这里有一些图片是我的 html 表单的输入和管理站点中的值

【问题讨论】:

    标签: python django django-users


    【解决方案1】:

    似乎当您在其 save 方法中保存表单时,您使用 user.address = self.cleaned_data["address"],然而,Customer 模型没有address 字段,它有deladdress,所以尝试重命名一个字段,或者在save 方法的CreateCustomer 表单中使用user.deladdress

    【讨论】:

    • 啊,非常感谢!这很奇怪,因为首先我有“地址”作为字段名称,但是当我有 user.address 时它不起作用。
    猜你喜欢
    • 1970-01-01
    • 2020-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多