添加phonenumber字段到注册表单Django

时间:2018-02-25 14:37:49

标签: python django

当我在此表单中输入详细信息并按下提交按钮时,我看不到phoneno和otp的值被保存在数据库中。字段电话号码和otp根本不显示。

SEE image仅保存用户名,并且不显示或保存otp和电话号码字段

这是我的signup/forms.py

from django import forms
from django.contrib.auth.models import User
from django.contrib.auth.forms import UserCreationForm

# Create your models here.
class allusers1(UserCreationForm):

    phoneno1=forms.CharField(label = "phonewa",max_length=10)
    otp1=forms.IntegerField(label="OTPP",required=False)

    class Meta:
        model=User
        fields=(
            'username',
            'password',
            'phoneno1',
            'otp1',
        )
    def save(self,commit=True):
        user=super(allusers1,self).save(commit=False)
        user.username1=self.cleaned_data['username']
        user.password1=self.cleaned_data['password']
        user.phoneno1=self.cleaned_data['phoneno1']
        user.otp1=self.cleaned_data['otp1']

        if commit:
            user.save()

        return user

这是我的signup/forms.py

from django.shortcuts import render
from .forms import allusers1

def signup(request):

    form1=allusers1(request.POST or None)
    if form1.is_valid():
        form1.save()

    context = {
         "form1": form1,


     }
    return render(request, "signup.html",context)

1 个答案:

答案 0 :(得分:0)

您的User模型是您在第二行导入的默认django.contrib.auth.models.User。此模型具有predefined fields。正如您从文档中看到的那样,otp1phoneno1不在其中。因此,当您保存User实例时,这些属性将被忽略。

所以你必须像文档(Django 2.0)中描述的那样extend the User model

# models.py   
from django.contrib.auth.models import AbstractUser
class User(AbstractUser):
    otp1 = models.IntegerField(null=True)
    phoneno1 = models.CharField(max_length=10)

# settings.py
settings.AUTH_USER_MODEL = 'myapp.User'

# admin.py
from django.contrib import admin
from django.contrib.auth.admin import UserAdmin
from .models import User

admin.site.register(User, UserAdmin)

您不需要为Django管理员提供特殊表格。您自己的模型将继承Django的用户模型带来的所有内容,以及您自己的字段/方法。