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?
运行时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)