簡體   English   中英

Django-allauth沒有在自定義SignupForm上保存額外的字段

[英]Django-allauth not saving additional field on custom SignupForm

我無法正確擴展django-allauth注冊表單。

我需要的字段顯示在我的注冊表單中,但rappa_name字段不會存儲在我的數據庫中。

我遵循了這個主題: 如何在使用django-allauth時自定義用戶配置文件

但無法讓它發揮作用。

我的forms.py:

from django import forms
from django.contrib.auth import get_user_model
from django.contrib.auth.forms import UserCreationForm


User = get_user_model()


class UserCreationForm(UserCreationForm):

    rappa_name = forms.CharField(label = "Rappa Name")

    class Meta(UserCreationForm.Meta):
        model = User

    def signup(self, request, user):

        user.rappa_name = self.cleaned_data['rappa_name']
        user.save()
        return user

和我的models.py


class User(AbstractUser):

    # raooa name of user
    rappa_name = CharField(_("Rappa Name"), default='', max_length=255)

    def get_absolute_url(self):
        return reverse("users:detail", kwargs={"username": self.username})

我確保我的settings.py有

ACCOUNT_FORMS = {
'signup': 'myproject.users.forms.UserCreationForm',
}

我需要將rappa_name保存為用戶的字段,但它當前沒有保存

解決:我將rappa_name字段移動到我的個人資料,然后將SignupForm更改為:

class UserCreationForm(SignupForm):

    rappa_name = forms.CharField(max_length=30, label='Rappa Name')

    def save(self, request):

        # Ensure you call the parent classes save.
        # .save() returns a User object.
        user = super(UserCreationForm, self).save(request)

        # Add your own processing here.
        profile = user.profile
        profile.rappa_name = self.cleaned_data['rappa_name']
        profile.save()
        # You must return the original result.
        return user

我按照這里的文檔https://django-allauth.readthedocs.io/en/latest/forms.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM