在Django中使用自定义用户模型进行身份验证

时间:2018-07-11 08:07:41

标签: 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中的

tab_userid中的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

0 个答案:

没有答案