django 使用 AbstractUser 删除模型中不需要的用户字段

标签 django

我是 django 的初学者,我正在研究用户身份验证。我正在使用 Abstractuser 和默认的 User 模型来创建用户。但是,收集了很多对我的项目没有用的不必要信息。

这是我的models.py:

from django.db import models
from django.contrib.auth.models import AbstractUser

class User(AbstractUser):
    pass

这些是生成的字段:

('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('password', models.CharField(max_length=128, verbose_name='password')),
('last_login', models.DateTimeField(blank=True, null=True, verbose_name='last login')),
('is_superuser', models.BooleanField(default=False, help_text='Designates that this user has all permissions without explicitly assigning them.', verbose_name='superuser status')),
('username', models.CharField(error_messages={'unique': 'A user with that username already exists.'}, help_text='Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only.', max_length=150, unique=True, validators=[django.contrib.auth.validators.UnicodeUsernameValidator()], verbose_name='username')),
('first_name', models.CharField(blank=True, max_length=150, verbose_name='first name')),
('last_name', models.CharField(blank=True, max_length=150, verbose_name='last name')),
('email', models.EmailField(blank=True, max_length=254, verbose_name='email address')),
('is_staff', models.BooleanField(default=False, help_text='Designates whether the user can log into this admin site.', verbose_name='staff status')),
('is_active', models.BooleanField(default=True, help_text='Designates whether this user should be treated as active. Unselect this instead of deleting accounts.', verbose_name='active')),
('date_joined', models.DateTimeField(default=django.utils.timezone.now, verbose_name='date joined')),
('groups', models.ManyToManyField(blank=True, help_text='The groups this user belongs to. A user will get all permissions granted to each of their groups.', related_name='user_set', related_query_name='user', to='auth.Group', verbose_name='groups')),
('user_permissions', models.ManyToManyField(blank=True, help_text='Specific permissions for this user.', related_name='user_set', related_query_name='user', to='auth.Permission', verbose_name='user permissions')),

我希望在我的项目中出现的唯一字段是: 密码用户名first_namelast_nameemail & date_joined.

我搜索过,只找到了删除 username 并将 email 指定为默认值的方法。

如何自定义用户模型以包含在我的项目中使用的字段? 感谢任何帮助。

编辑:关于通过email 进行身份验证我没有说什么。我想继续使用 username 作为默认值,只是删除不必要的字段。

最佳答案

还有另一个抽象允许你想要的,它是 AbstractBaseUser那里都有解释:

The easiest way to construct a compliant custom user model is to inherit from AbstractBaseUser. AbstractBaseUser provides the core implementation of a user model, including hashed passwords and tokenized password resets. You must then provide some key implementation details

所以 AbstractUser 也使用 AbstractBaseUser 作为开始,然后添加东西。

请注意,如果您不添加 PermissionsMixin(它会添加组和权限字段),admin 将变得不可用,其他几个与 Django 的默认授权框架相关的包也是如此。

但是,如果您不关心这些,您可以自由地只实现您想要的字段。

关于django 使用 AbstractUser 删除模型中不需要的用户字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67452838/

相关文章:

python - Django AutoOneToOneField 迁移和现有条目

javascript - AngularJS 花括号没有解析,但 ng-bind 有效

javascript - Django 和加载 Javascript

python - 如何将 'mobile' 字段添加到 django 中用户模型中的默认 auth_user 表?

python - 使用 Django 1.9 时,当我删除模型对象时,如何让 Django 删除文件?

django - 南 Django 迁移

django - 在 Django 中为开发模式提供静态文件

python - Django:没有名为 context_processors 的模块,基本 URL

django - 从麦克风录制音频并另存为.wav django Web应用

javascript - 尝试从 javascript 中的 django 获取列表列表作为 csv 数据,但引号显示在 html 数字中