我可以在django的model.py中创建一个AbstractUser在我的模型类中的实例吗? &g



我是django的新手,从一个教程视频中,在配置文件应用程序的model.py文件中,他创建了一个与配置文件模型类一对一关系的User模型实例,如下所示:

from django.contrib.auth.models import User
class Profile(models.Model):
user = models.OneToOneField(User, blank=True, null=True)

我理解他通过在类中创建User模型的实例来创建配置文件模型和User模型之间的一对一关系。

我也试图用AbstractUser实现这一点。

我试着做同样的事情,像这样:

from django.contrib.auth.models import AbstractUser
class Blogger(models.Model):
user = models.OneToOneField(AbstractUser, blank=True, null=True)

在settings.py中,我已经像这样连接了PostGresSql数据库:

DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'bookandreviews',
'USER': 'postgres',
'HOST': 'localhost',
'PASSWORD': '2030',
'PORT': '5432'
}
}

我运行py manage.py runserver,我得到了这个错误:

django.core.management.base.SystemCheckError: SystemCheckError: System check identified some issues:
ERRORS:
users.Bloggers.user: (fields.E300) Field defines a relation with model 'AbstractUser', which is either not installed, or is abstract.
users.Bloggers.user: (fields.E307) The field users.Bloggers.user was declared 
with a lazy reference to 'auth.abstractuser', but app 'auth' doesn't provide model 'abstractuser'.

我不明白。所以我尝试添加一个auth_user_model,如下所示:

AUTH_USER_MODEL = 'users.Bloggers'

我立刻得到了这个问题:

AttributeError: type object 'Bloggers' has no attribute 'REQUIRED_FIELDS'

* *请问谁能帮我理解这一切,还有,是否有可能实例化AbstractUser模型?* *

我想我已经明白了。AbstractUser是User模型的子类,它继承自User模型。如果您想在已经布局好的User模型中包含一些额外的字段,则应该使用它。

最好的方法是使用AbstractBaseUser,它只包含身份验证,并且允许对User模型进行完全控制。您必须指定用户名字段(如果您计划将身份验证从用户名更改为电子邮件)和必需的字段。

你可以阅读这篇文章来理解https://medium.com/@engr.tanveersultan53 abstractuser-vs-abstractbaseuser-in-django-7f231a276988。或者这个问题:

https://stackoverflow.com/questions/21514354/difference-between-abstractuser-and-abstractbaseuser-in-django: ~:文本= AbstractUser % 20 % 20 % 20完整% 20用户供应% 20 % 20当% 20你% 20子类。