将Domain \添加到用户名

时间:2017-11-01 20:53:27

标签: django django-models

我希望我的登录页面具有用户名功能,但对于用户使用LDAP进行身份验证时写入数据库的记录,我希望只有用户使用Domain \ username输入用户名,域名将永远不会改变所以我可以强制它而不查找它。但是,我模型中的所有其他表都是预先存在的表,其中Domain \ username作为主键/外键。我该怎么做呢?以下是我的

from __future__ import unicode_literals
from django.utils import timezone
from django.contrib.auth.models import (AbstractBaseUser,PermissionsMixin)
from django.db import models
from django.conf import settings
from django.forms import ModelForm


class User(AbstractBaseUser, PermissionsMixin):



    email = models.EmailField(unique=True)
    username = models.CharField(max_length=7, unique=True)
    first_name = models.CharField(max_length=40)
    last_name = models.CharField(max_length=140)
    date_joined = models.DateTimeField(default=timezone.now)
    is_active = models.BooleanField(default=True)
    is_staff = models.BooleanField(default=False)
    facility = models.CharField(max_length=140)
    jobdescription = models.CharField(max_length=140)
    positiondescription = models.CharField(max_length=140)
    coid = models.CharField(max_length=5)
    streetaddress = models.CharField(max_length=140)



    USERNAME_FIELD = 'username'

    class Meta:
        app_label = 'accounts'
        db_table = "user"

1 个答案:

答案 0 :(得分:1)

您希望其他型号指向"用户"使用格式为Domain\username的ForeignKey,是吗?

我的第一个想法是让您的User模型同时拥有ldap_username和普通username字段。 ldap_username可以设置为主键,可以通过覆盖模型的保存功能来生成。

类似的东西:

def save(self, *args, **kwargs):
    self.ldap_username = '{domain}\{username}'.format(
        domain='POTATOES', username=self.username)
    super(User, self).save(*args, **kwargs);