为什么没有auth.User检查必填字段?

won*_*ng2 2 python django django-models

我想扩展django的auth.User,看完这个问题之后,
这是我的models.py:

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

class UserProfile(models.Model):
    user = models.OneToOneField(User)
    age = models.SmallIntegerField()  

def create_user_profile(sender, instance, created, **kwargs):  
    if created:  
        profile, created = UserProfile.objects.get_or_create(user=instance)    

post_save.connect(create_user_profile, sender=User) 
Run Code Online (Sandbox Code Playgroud)

我在settings.py的底部添加了这一行:

AUTH_PROFILE_MODULE = 'MYAPP.UserProfile'  
Run Code Online (Sandbox Code Playgroud)

问题是,当我运行时python manage.py shell,键入:

from django.contrib.auth.models import User  
user = User()  
Run Code Online (Sandbox Code Playgroud)

它没有问题!为什么不给出我没有给出的错误username/password

Sim*_*gwi 6

运行时user = User(),您所做的只是创建一个新的User实例.在您尝试保存之前,它不会抛出错误user.save().

要同时创建新模型实例并将其保存到DB:

user = User.objects.create() # should throw an IntegrityError due to required (not NULL) fields not provided
Run Code Online (Sandbox Code Playgroud)