如何在数据库中为django模型中的用户名匹配确切的案例?

时间:2015-09-19 18:09:07

标签: python mysql django database model

我在研究django项目。其实我在学习。我创建了自定义用户模型。我试图匹配确切的用户名案例让用户登录。我的models.py文件看起来像,

from django.db import models
from django.contrib.auth.models import AbstractBaseUser


class User(AbstractBaseUser):
    uname = models.CharField(max_length=25, unique=True)
    email = models.EmailField(max_length=200, unique=True)
    joined = models.DateTimeField(auto_now_add=True)
    is_active = models.BooleanField(default=False)
    fname = models.CharField(max_length=50)
    lname = models.CharField(max_length=50)
    act_code = models.CharField(max_length=30)
    suspended = models.BooleanField(default=False)

    USERNAME_FIELD = 'uname'

    def __unicode__(self):
        return self.uname

这是我查询用户登录的查询,

try:
   dbUserDetails = User.objects.raw("SELECT * FROM `hcAccounts_user` WHERE BINARY `uname` = '%s'",
                                                     cleaned_info['uname'])

except User.DoesNotExist:
       response_data = {'error': 'true', 'message': 'Wrong username!!!'}

所以在我的数据库中我有两个用户,

'abc' and 'Abcd'

此行查询给出了错误

AttributeError at /accounts/login
'RawQuerySet' object has no attribute 'is_active'

此查询,

dbUserDetails = User.objects.get(uname__iexact=cleaned_info['uname'])

不匹配大小写,如果我使用此查询以用户名登录' abc',

dbUserDetails = User.objects.get(uname__contains=cleaned_info['uname'])

这将同时为两个用户提供uname包含' abc'。这不符合案例。那么有谁能告诉我如何匹配用户名来获取数据库中的信息?

我尝试了很多。我在网上搜索了很多答案。我不知道自己错过了什么,但我被困在这里。

感谢您的时间。我很感激。

0 个答案:

没有答案