我可以在django的www.example.com中的模型类中创建AbstractUser的示例吗model.py?

euoag5mw  于 2023-04-07  发布在  Go
关注(0)|答案(1)|浏览(94)

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

from django.contrib.auth.models import User

class Profile(models.Model):
      user = models.OneToOneField(User, blank=True, null=True)

我知道他通过在类中创建User模型的示例,创建了与profile模型和User模型的一对一关系。
我也在尝试使用AbstractUser来实现这一点。
我试着这样做同样的事情:

from django.contrib.auth.models import AbstractUser

class Blogger(models.Model):
      user = models.OneToOneField(AbstractUser, blank=True, null=True)

在www.example.com中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模型?

bxfogqkk

bxfogqkk1#

我想我已经弄明白了。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#:~:text= AbstractUser%20is%20a%20full%20User,supply%20them%20when%20you%20subclass.

相关问题