请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

能不能把用户表和管理员表分成两个的问题^^

@Bobby 老师
就是管理员是一个表,继承AbstractUser, 用户是一个表继承Model,auth_user_model写的是管理员的表,JWT登录验证也是管理员表,如何为用户表写一个登录接口呢?
您之前回答过一个类似的问题,说是 “ 新建一张客户表,然后这个表中有一个onetoonefiled指向一个user记录就行了 ”,
首先这两个表内容是不一样的啊,一个是管理员,一个是注册用户,onetoonefield指向另一个表的记录是什么情况啊,您能否详细讲解啊,
另外除了这个方式之外还有没有别的方式了,可不可以也为用户写一个登录接口呢,如果可以,直接这样写行吗

    urls.py
    # jwt的认证接口
    # 管理员的认证接口
    path('login/', obtain_jwt_token),
    # 注册用户的认证接口
    path('userlogin/', obtain_jwt_token)

他俩用的是一个,虽然说他俩用的是一个,并且auth_user_model指向的是管理员的,但是我在

views.py
class CustomBackend(ModelBackend):
    # 注册用户验证
	def authenticate(self, request, username=None, password=None, **kwargs):
        try:
            custom= Custom.objects.get(Q(username=username) |         Q(phone=username))
            if patient.check_password(password):
                return custom
        except Exception as e:
            return None
            
class AdminBackend(ModelBackend):
   # 管理员验证
    def authenticate(self, request, username=None, password=None, **kwargs):
        try:
            admin= Admin.objects.get(Q(username=username) | Q(phone=username))
            if patient.check_password(password):
                return admin
        except Exception as e:
            return None

中是这样写的,

settings.py
AUTH_USER_MODEL = 'users.PatientProfile'

AUTHENTICATION_BACKENDS = (
    'users.views.CustomBackend','users.views.AdminBackend',
)

这样写可以吗,
还是需要重写一个接口,

正在回答

1回答

其实是这样的,你这里提到的管理员表和用户表是从业务角度出发的,但是对于系统来说不管你的用户怎么分,哪怕有十种用户,每种用户信息都不一样也没有关系,因为对于他们来说都会对应一个账户,这个账户我们叫用户,不过这个用户的概念是针对系统而言,这些用户都有共同的信息: 用户名,密码,手机号码等,所以不管有多少种用户这些共同的信息可以抽象成一张表,然后这十张表有一个onetoonefiled指向这个user表的外键,每种用户不同的信息可以单独的定义在自己的表中,这样所有的用户登录就可以走统一的user表了啊

0 回复 有任何疑惑可以回复我~
  • 提问者 慕粉3235508 #1
    回复 有任何疑惑可以回复我~ 2019-11-24 23:19:02
  • 提问者 慕粉3235508 #2
    老师,一般来说,遇到这种情况,比如说医生,患者,管理员,会把表分开吗
    回复 有任何疑惑可以回复我~ 2019-11-26 02:16:41
  • 提问者 慕粉3235508 #3
    分开之后的注册怎么写,牵扯到两个表之间的数据的话
    回复 有任何疑惑可以回复我~ 2019-11-26 02:17:35
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信