gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-05 08:04:48 24 4
gpt4 key购买 nike

我是 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com