簡體   English   中英

如何在Django的擴展用戶創建表單中保存自定義添加的字段

[英]How to save custom added field in an extended user creation form in django

我對Django很陌生,我通過擴展Django中的UserCreationForms制作了自定義注冊表單。

class SignUpForm(UserCreationForm): #This class will be used in views of account to make sigupform
user_type = forms.CharField(required=True,widget=forms.Select(choices=usertypes))
email = forms.CharField(max_length=254, required=True, widget=forms.EmailInput())
class Meta:
    model = User
    fields = ['username', 'user_type','email','password1','password2']
def save(self,commit=True):
    user = super(SignUpForm, self).save(commit=False)
    user.user_type = self.cleaned_data['user_type']
    print('Flag3')
    if commit:
        user.save()
    return user

與視圖工作正常:

def signup(request):
if request.method == 'POST':
    form = SignUpForm(request.POST)
    print('Flag0')
    if form.is_valid():
        user = form.save()
        if user.user_type == 'Seller' or user.user_type=='seller':
            print('Flag1')
            auth_login(request, user)
            print('Flag2')
            print(user.user_type)
            group = Group.objects.get(name='Seller')
            print(group.name)
            print('Flag3')
            user.groups.add(group)
            return redirect('get_seller')
        if user.user_type == 'Customer' or user.user_type=='customer':
            print('Flag1')
            auth_login(request, user)
            print('Flag2')
            print(user.user_type)
            group = Group.objects.get(name='Customer')
            print(group.name)
            print('Flag3')
            user.groups.add(group)
            return redirect('home')
else:
    form = SignUpForm()
return render(request, 'signup.html', {'form': form})

我添加了標志,因為正在檢查表單的進度。

我面臨的問題是我想保存使user_type成為自定義字段

我不知道如何保存自定義字段,或者是否正在保存自定義字段,如何獲取值。

更新:我打印了user.user_type 服務器控制台 通過: def save(self,commit=True): user = super(SignUpForm, self).save(commit=False) user.user_type = self.cleaned_data['user_type'] print(user.user_type)

Django的用戶模型沒有user_type字段。 如果您希望user_type字段成為Django用戶模型的一部分。 然后使用AbstractUser模型並創建一個自定義用戶模型。

from django.contrib.auth.models import AbstractUser

class CustomUser(AbstractUser):
    user_type = models.CharField(max_lenght=20, choices=usertypes)

現在,在創建表單時使用此自定義模型。

暫無
暫無

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

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