django - 在 Django 中使用自定义用户模型进行身份验证
问题描述
我在 django 中使用旧数据库。django 使用的用户身份验证方法需要更改才能使用遗留数据库数据。
数据库中有两个表
tab_users and tab_user_group
结构
tab_user
id | username | password | timestamp | user_group_id | status | section_id
tab_user_group
id | user_group_name | can_view | can_edit |can_delete | dashboard_access | app_access | section_specific
user_group_id
intab_user
是用户id
的tab_user_group
详细信息user_group
。
id
在两个表中都是主键
现在需要使用这些字段来实现自定义用户身份验证。登录和用户创建。
到目前为止,我已经尝试过
from django.db import models
from django.contrib.auth.models import ( AbstractBaseUser , BaseUserManager )
class UserManager(BaseUserManager):
def create_user(self,username,password=None,status=True):
if not username:
raise ValueError("Username is required.")
user_obj=self.model(
username = username
)
user_obj.set_password(password)
return user_obj
# Create your models here.
class TabUsers(AbstractBaseUser):
username = models.CharField(max_length=1100)
password = models.CharField(max_length=10000)
user_group_id = models.IntegerField()
status = models.IntegerField()
timestamp=models.DateTimeField(auto_now_add=True)
USERNAME_FIELD='username'
def get_user_group_id(self):
return self.user_group_id
@property
def is_status(self):
return self.status
class Meta:
managed = False
db_table = 'tab_users'
class TabUsersGroup(models.Model):
user_group = models.CharField(max_length=1000)
can_add = models.IntegerField()
can_edit = models.IntegerField()
can_delete = models.IntegerField()
can_view = models.IntegerField()
section_specific = models.IntegerField()
class Meta:
managed = False
db_table = 'tab_users_group'
但是无法理解如何实现进一步的用户创建应该询问用户名,密码用户组,如果 section_specific 要求 section_id 将存储在 tab_users 中的字符串中
tab_section
id | section