簡體   English   中英

如何在 Django 的 UserCreationForm 中擴展字段?

[英]How to extend field in UserCreationForm in django?

我一直在嘗試在 UserCreationForm 中添加電話號碼字段,以便在注冊時用戶提供其電話號碼,但不幸的是電話號碼未存儲。 它接受注冊頁面上的電話號碼,但不顯示網頁上的電話號碼。 我認為它不是存儲。

表格.py

class myCreateForm(UserCreationForm):
ph= forms.CharField(max_length=400, required=True, label='Phone')
class Meta:
    model = User
    fields = ['first_name', 'last_name' ,'username', 'email', 'password1', 'password2','ph']

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

視圖.py

def register(request):
form = myCreateForm()
if request.method == "POST":
    form = myCreateForm(request.POST)
    if form.is_valid():
        form.save()
        return redirect('loginPage')
return render(request , 'register.html', {'form' : form})

模板

{%for i in user%}
Hi {{i.first_name}}<br>
Username : {{i.username}}<br>
E-Mail : {{i.email}}<br>
Phone : {{i.ph}}<br>
{%endfor%}

但是在我的網頁上,它顯示了除電話號碼之外的所有內容。

請幫幫我

您需要擴展 Django 用戶模型。請參閱文檔

例如,讓我們創建一個新的模型Profile ,它將與 django 用戶模型具有OneToOne關系

class Profile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    phone = models.CharField(max_length=50..)

現在在你看來

form = myCreateForm(request.POST)
    if form.is_valid():
        user = form.save()
        phone = form.cleaned_data.get('ph')
        Profile.objects.create(user=user,phone=ph)
        return redirect...

現在在模板中{{i.profile.phone}}將給出電話字段的結果。

暫無
暫無

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

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