Как добавить пользовательское поле в модель, которая расширяет AbstractUser

Я пытаюсь создать свой собственный класс User под названием Customer, который расширяет модель AbstractUser и имеет дополнительное поле с именем address. Когда я регистрируюсь, я вижу, что пользователь был создан в администраторе Django, и все поля (имя пользователя, имя, фамилия и адрес электронной почты) отображаются на экране администратора django, но я не вижу значения в поле адреса. Как узнать, сохраняется ли адрес и как его отобразить в админке?

Ниже мой код для models.py

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

просмотры.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})

формы.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-формы и значением на сайте администратора введите здесь описание изображения

введите здесь описание изображения


person ShippyDippy    schedule 01.05.2021    source источник


Ответы (1)


Похоже, что когда вы сохраняете форму в ее методе save, вы используете user.address = self.cleaned_data["address"], однако в модели Customer нет поля address, а есть deladdress, поэтому попробуйте переименовать поле или используйте user.deladdress в методе save формы CreateCustomer.

person Dmytro    schedule 01.05.2021
comment
Ах, большое спасибо! Это странно, потому что сначала у меня был адрес в качестве имени поля, но это не сработало, когда у меня был user.address. - person ShippyDippy; 01.05.2021