gpt4 book ai didi

python - 在 Django 中扩展 AbstractUser 的正确方法?

转载 作者:行者123 更新时间:2023-11-29 07:11:25 24 4
gpt4 key购买 nike

我正在尝试集成两个 django 应用程序,每个应用程序都有各自的身份验证工作。为此,我尝试对 AbstractUser 而不是 User 进行子类化。我正在关注PyBB docsDjango#substituting_custom_model 。我已经删除了所有应用程序中的所有迁移文件,除了它们各自的 init.py(包括来 self 的站点包中的 PyBB 库的迁移)。我还将 Mysql 数据库更改为空白数据库以重新开始,并且我尝试对 AbstractUser 进行子类化,如下所示。

我的模型.py:

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

from django.db import models
class Student_User(models.Model):
"""
Table to store accounts
"""
su_student = models.OneToOneField(AbstractUser)

USERNAME_FIELD = 'su_student'

su_type = models.PositiveSmallIntegerField(db_column='su_type', default=0)
su_access = models.TextField(db_column='su_access', default='')
su_packs = models.TextField(db_column='su_packs', default='')

REQUIRED_FIELDS = []

def __unicode__(self):
return str(self.su_student)

我的设置.py:

AUTH_USER_MODEL = "app.Student_User"
PYBB_PROFILE_RELATED_NAME = 'pybb_profile'

为我的主应用程序运行 makemigrations 时,出现此错误:

app.Student_User.su_student: (fields.E300) Field defines a relation with model 'AbstractUser', which is either not installed, or is abstract.

我如何实现我在这里想要做的事情?

PS:该应用程序在 onetoone 和没有 username_field 或 required_field 的用户中运行良好。

PPS:我刚刚检查了 contrib.auth.models 中的 AbstractUser 模型,它具有 class Meta: Abstract = True。好吧,它是抽象的,但我该如何解决这个问题?我只需要一次登录,目前,我网站的两个部分虽然通过网址连接,但要求单独登录并且不检测彼此的登录。我需要为此做什么?

最佳答案

你不能与抽象模型建立一对一的关系;根据定义,抽象模型永远不会被实际实例化。

AbstractUser 应该继承。你的结构应该是:

class Student_User(AbstractUser):
...

关于python - 在 Django 中扩展 AbstractUser 的正确方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39566144/

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