我希望我的登录页面具有用户名功能,但对于用户使用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"
答案 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);