Django不区分大小写的登录,混合大小写的用户名

时间:2014-12-28 03:15:47

标签: django

我正在尝试为Django应用程序执行不区分大小写的登录,而不会更改原始用户名案例。根据我的研究,最好的方法是创建一个相关字段,以便在注册时以小写形式存储用户名。没有重塑用户模型,这是一个简单的解决方案,对吧?我的困境:如何从一个模型中获取数据,更改它,并在创建对象时将其保存在另一个模型中?

以下是 models.py

中的内容
from django.db import models
from django.contrib.auth.models import User

class UserProfile(models.Model):
    user = models.OneToOneField(User)
    lc_n = User.username
    lc_n = lc_n.lower()
    lowercase_name = models.CharField(max_length=30, default=lc_n)

运行python manage.py makemigrations时出现以下错误:

AttributeError: type object 'User' has no attribute 'username'

用户确实拥有该属性,但无法以这种方式访问​​。

请原谅我,因为这必须包含一些简单的基本缺陷。我们将非常感谢您提供的任何支持。

1 个答案:

答案 0 :(得分:9)

您不需要任何其他模型来实现不区分大小写的登录。 Django支持iexact运算符的不区分大小写的过滤:

user = User.objects.get(username__iexact=name)