本篇主要讨论一下User Model的使用技巧. 注意, 由于Django 1.5之后user model带来了很大的变化, 本篇内容只针对django 1.5之后的版本. 1. 确定 User Model 我们推荐一下方式来确定某一django项目使用的user model: # 使用默认User
扩展用户模型的方法有两种,一种是模仿官方的方法,直接继承`AbstractUser`类来扩展用户数据,另外一种是通过一对一关系关联User类,来扩展用户数据,我这里选择采用第二种一对一关联的方式来扩展,这样的好处是不需要再setiings.py中另外配置,也有利于我们理解和学习django的关联关系用法。 class UserProfile(models.Model)...
from django.contrib.auth.models import AbstractUser from django.utils.translation import ugettext_lazy as _ # Create your models here. class KarmaUser(AbstractUser): karma = models.PositiveIntegerField(_("karma"),default=0,blank=True) settings.py AUTH_USER_MODEL = 'profiles.KarmaUser' 2.使用a...
AUTH_USER_MODEL = "myapp.NewUser" 1. 方法2: 扩展 AbstractBaseUser类 AbstractBaseUser中只含有3个field: password, last_login和is_active. 如果你对django user model默认的first_name, last_name不满意, 或者只想保留默认的密码储存方式, 则可以选择这一方式. 方法3: 使用OneToOneField 如果你想建立一个...
函数create_user和create_superuser调用上面 2 个函数,在用命令行创建用户时使用,代替了自带的命令 函数create_user创建的用户不是超级用户,不能进入后台管理且处于未激活状态 修改setting.py 在setting.py文件增加 AUTH_USER_MODEL="organizational_structure.Staff" ...
我还必须定义我自己的UserManager。这是因为现有的管理器定义了create_user和create_superuser方法。 所以现在我的UserManager是这样的: classUserManager(BaseUserManager):defcreate_user(self,email,username,password=None,dep=0):ifnotemail:raiseValueError("Users must have an email address")user=self.model(us...
第二步: 建立名叫UserProfile的模型(Model) 我们并没有改变Django Auth自带的User模型,也没有建立新的User模型。UserProfile只是对User模型的扩展, 与User是1对1的关系。找到users/models.py, 并创建如下UserProfile模型。由于我们引用了Django Auth自带的User模型,所以我们必需开始先把它import进来。
- Create model User - Alter field id on devices (py369) [root@localhost devops]# python manage.py migrate Operations to perform: Apply all migrations: admin, auth, contenttypes, hello, sessions Running migrations: Applying hello.0005_auto_20201105_2336... OK ...
- Create model User - Alter field id on devices (py369) [root@localhost devops]# python manage.py migrate Operations to perform: Apply all migrations: admin, auth, contenttypes, hello, sessions Running migrations: Applying hello.0005_auto_20201105_2336... OK ...
User模型源码分析 class User(AbstractUser): """ Django 身份验证系统中的用户由该模型表示 需要用户名和密码。其他字段是可选的。 """ class Meta(AbstractUser.Meta): swappable = 'AUTH_USER_MODEL' 1. 2. 3. 4. 5. 6. 7. 8. 我们可以看到User这个类本身没干什么事情,而是继承自AbstractUser类,那...