当我在此表单中输入详细信息并按下提交按钮时,我看不到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)
答案 0 :(得分:0)
您的User
模型是您在第二行导入的默认django.contrib.auth.models.User
。此模型具有predefined fields。正如您从文档中看到的那样,otp1
和phoneno1
不在其中。因此,当您保存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的用户模型带来的所有内容,以及您自己的字段/方法。