我在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
中的两个表中的
tab_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