首页 文章

使用Django的自定义用户模型(Django1.6)

提问于
浏览
1

我有一个Django应用程序,需要一个额外的字段(一个多层的映射到Book类),我通过扩展AbstractUser做到了这一点 .

如果您对Django的用户模型完全满意并且您只想添加一些其他配置文件信息,则可以简单地继承django.contrib.auth.models.AbstractUser并添加您的自定义配置文件字段 . 此类提供默认用户的完整实现作为抽象模型 .

class User(AbstractUser):
    entitledBooks = models.ManyToManyField(Book)

我在 settings.py 添加了模型

AUTH_USER_MODEL = 'BookRServer.User'

但是如何创建用户(以编程方式)?

user = User.objects.create_user()不起作用 .

2 回答

  • 0

    create_user manager方法只接受三个参数:username,email(可选)和password(可选) .

    你可以这样做:

    bookset=Book.objects.all()
    user = User.objects.create_user('testuser',email='1@gmail.com')
    user.entitledBooks=bookset
    user.save()
    
  • 1

    在简单的,松散耦合的方式是创建一个包含您的多对多关系的一对一关系用户配置文件模型

    class UserProfile(models.Model):
        user = model.OneToOneField(User)
        # your many-to-many field here
    
    
    # create user
    u = User(username="", password="", email="", ...)
    u.save()
    u.userprofile(your fields..here)
    u.userprofile.save()
    

    这在所有django版本中通常是相同的 . 什么基本上django 1.6弃用是提供模型方法 get_profile 和一些相关的设置..

    除非您真的想根据要求从地面构建 User 模型,否则您不必真正使用 AUTH_USER_MODEL ..

    从用户模型中分离用户配置文件也有助于长期运行

相关问题