首页 > 解决方案 > 异常值:NOT NULL 约束失败:auth_user.username

问题描述

我正在创建一个项目来使用 Django 注册和查看个人资料。

问题是当我尝试注册新用户时出现一些错误

NOT NULL 约束失败:auth_user.username

这是我的 form.py 和 view.py 文件:

表格.py

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

class FileDataForm(forms.Form):
    name = forms.CharField(max_length=50)
    file = forms.FileField()
    image = forms.ImageField()

class userregister(UserCreationForm):

    first_name = forms.CharField(max_length=50, required = False ,help_text ='optional')
    last_name = forms.CharField(max_length=50, required = False ,help_text ='optional')
    email = forms.EmailField(max_length=254, help_text='Required. Inform a valid email address.')

    class Meta:
        model = User
        fields = ('first_name', 'last_name', 'email', 'password1', 'password2', )


class editprofileform(UserChangeForm):

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

查看.py:

from django.shortcuts import render 
from django.http import HttpResponse
from django.contrib.auth.forms import UserCreationForm
from django.shortcuts import render,redirect,render_to_response
from django.contrib.auth.mixins import LoginRequiredMixin
from django.views.generic import View
from .models import FileData
from .forms import FileDataForm
from django.contrib.auth.models import  User
from django.contrib.auth.decorators import login_required
from .forms import userregister,editprofileform
from django.contrib.auth.forms import UserChangeForm , PasswordChangeForm
from django.contrib.auth import update_session_auth_hash



# Create your views here.
@login_required
def home(request):
     return HttpResponse('<h1>Welcome to your first page<h1>')


def registration(request):
    print request
    print 'request'
    if request.method == 'POST':
        #save the user data
        form = userregister(request.POST)
        print form.errors
        print 'here'
        if form.is_valid():
            print 'i am here'
            form.save()
            return render(request , 'registration/success.html' ,{'form' : form,} )
        else:
            form =  userregister()
            return render(request , 'registration/register.html' ,{'form' : form,} )
    else:
        form =  userregister()
        return render(request , 'registration/register.html' , {'form': form,})

模型.py

# -*- coding: utf-8 -*-
from __future__ import unicode_literals

from django.db import models
from django.contrib.auth.models import User
from django.db.models.signals import post_save

# Create your models here.

class UserProfile(models.Model):
    user        = models.OneToOneField(User)
    description = models.CharField(max_length = 100,default='')
    city        = models.CharField(max_length =30)
    mobile      = models.IntegerField(default=0)

def create_profile(sender , **kwargs):
    if kwargs['created']:
        user_profile = UserProfile.objects.create(user = kwargs['instance'])

post_save.connect(create_profile , sender=User)

错误:

异常值:
NOT NULL 约束失败:auth_user.username

标签: django

解决方案


在您的 form.py 文件中,尝试插入“用户名”作为“字段”列表中的第一个元素。看起来您没有在表单中使用它,所以当您提交时,它会将用户名留空。


推荐阅读