Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django 积分误差/_Django_Django Models_Django Forms - Fatal编程技术网

Django 积分误差/

Django 积分误差/,django,django-models,django-forms,Django,Django Models,Django Forms,我一直在尝试使用django.contrib.auth.models的内置用户创建用户配置文件表单。一切正常,但在将字段填充到表单(正在显示)后,我在/处遇到了一个完整性错误,表示NOTNULL约束失败。 这是我的models.py文件 from django.db import models from django.contrib.auth.models import User from django.core.validators import MaxValueValidator # Cr

我一直在尝试使用django.contrib.auth.models的内置用户创建用户配置文件表单。一切正常,但在将字段填充到表单(正在显示)后,我在/处遇到了一个完整性错误,表示NOTNULL约束失败。

这是我的models.py文件

from django.db import models
from django.contrib.auth.models import User
from django.core.validators import MaxValueValidator
# Create your models here.
class UserProfileInfo(models.Model):

    user = models.OneToOneField(User,on_delete=models.CASCADE, null=True)
    phone_number = models.PositiveIntegerField(validators= 
    [MaxValueValidator(9999999999)],blank=True)


    def __str__(self): #This will print out this model
         return self.user.username
这是我的forms.py文件

from django import forms
from django.contrib.auth.models import User
from Login_Signup_Form.models import UserProfileInfo

class UserForm(forms.ModelForm):
    password = forms.CharField(widget=forms.PasswordInput())

class Meta:   
    model=User
    fields=('first_name','last_name','username','email','password',)

    class UserProfileForm(forms.ModelForm):
        class Meta:
             model=UserProfileInfo    #this is model
             fields=('phone_number',)
from django.shortcuts import render
from Login_Signup_Form.forms import UserForm,UserProfileForm
from Login_Signup_Form.models import UserProfileInfo
# Create your views here.

def index(request):
   return render(request,'base.html')

def register(request):
   registered=False

   if request.method == 'POST':
      user_form = UserForm(data=request.POST)  
      user_phone_number=UserProfileForm(data=request.POST)

        if user_form.is_valid() and user_phone_number.is_valid():
            user=user_form.save()
            user.set_password(user.password)
            user.save()

            phone = user_phone_number.save()
            phone.user=user    
        else:
            #Printing the errors
            print(user_form.errors,user_phone_number.errors)
   else:
        user_form = UserForm()
        user_phone_number = UserProfileForm()


  return render(request, 'base.html',{'user_form':user_form, ' 
phone_number':user_phone_number})
这是my views.py文件

from django import forms
from django.contrib.auth.models import User
from Login_Signup_Form.models import UserProfileInfo

class UserForm(forms.ModelForm):
    password = forms.CharField(widget=forms.PasswordInput())

class Meta:   
    model=User
    fields=('first_name','last_name','username','email','password',)

    class UserProfileForm(forms.ModelForm):
        class Meta:
             model=UserProfileInfo    #this is model
             fields=('phone_number',)
from django.shortcuts import render
from Login_Signup_Form.forms import UserForm,UserProfileForm
from Login_Signup_Form.models import UserProfileInfo
# Create your views here.

def index(request):
   return render(request,'base.html')

def register(request):
   registered=False

   if request.method == 'POST':
      user_form = UserForm(data=request.POST)  
      user_phone_number=UserProfileForm(data=request.POST)

        if user_form.is_valid() and user_phone_number.is_valid():
            user=user_form.save()
            user.set_password(user.password)
            user.save()

            phone = user_phone_number.save()
            phone.user=user    
        else:
            #Printing the errors
            print(user_form.errors,user_phone_number.errors)
   else:
        user_form = UserForm()
        user_phone_number = UserProfileForm()


  return render(request, 'base.html',{'user_form':user_form, ' 
phone_number':user_phone_number})

该错误可能来自表单中的空电话号码。您允许在表单中使用
blank=True
输入空电话号码,但在数据库级别不允许输入空电话号码,您还需要添加
null=True

phone_number = models.PositiveIntegerField(validators= 
[MaxValueValidator(9999999999)], blank=True, null=True)


使用
blank=True
时,该字段不是必需的,表单将进行验证,但它将引发完整性错误,因为
null=True
不在此处。这不会发生在<代码> CharField < /代码>中,但是空白值将被存储为空字符串。这仅是因为
PositiveIntegerField

需要该字段,如果该字段未填写,表单将不会验证,因此,它甚至不会命中数据库。使用<代码>空白= true>代码>字段不需要,并且表单将验证,但它会提高完整性错误,因为<代码> null = true不在这里(这不会发生在<代码> CharField <代码> >中,但是空白值将被存储为空字符串)。我认为这只是因为
PositiveIntegerField
的缘故。请查收。如果我是对的,请删除下一票:)你是对的,我确实应该仔细阅读,我的坏:-/你能编辑你的帖子,这样我就可以取消下一票吗?完全不相关,但电话号码不是整数-它是一个包含数字的文本值。