Python 2.7 Django:Can';t访问模型属性

Python 2.7 Django:Can';t访问模型属性,python-2.7,modelattribute,django-1.10,custom-backend,field-names,Python 2.7,Modelattribute,Django 1.10,Custom Backend,Field Names,最近我开始在Django中使用我现有的mysql数据库。实施它奏效了 数据库设置如下所示 DATABASES = { 'default': { 'NAME': 'app_data', 'ENGINE': 'django.db.backends.sqlite3', }, 'users': { 'NAME': 'user_data', 'ENGINE': 'django.db.backends.mysql', 'NAME': 'test01', 'US

最近我开始在Django中使用我现有的mysql数据库。实施它奏效了

数据库设置如下所示

DATABASES = {
'default': {
    'NAME': 'app_data',
    'ENGINE': 'django.db.backends.sqlite3',
},
'users': {
    'NAME': 'user_data',
    'ENGINE': 'django.db.backends.mysql',
    'NAME': 'test01',
    'USER': 'test01',
    'PASSWORD': 'test',
    'HOST': 'localhost',
    'PORT': '',
}
在我的模型“MyUser”中使用“users”数据库连接,如下所示

class MyUser(models.Model):
    name = models.CharField(max_length=50)
    key = models.CharField(max_length=32)
    options = models.TextField(blank=True, null=True)
    description = models.TextField(blank=True, null=True)
    statistics = models.TextField(blank=True, null=True)
    create_time = models.DateTimeField()
    modify_time = models.DateTimeField()
    is_enabled = models.IntegerField(blank=True, null=True)
    password = models.CharField(max_length=50, blank=True, null=True)
    hosts = models.TextField(blank=True, null=True)
    remote_ips = models.CharField(max_length=200, blank=True, null=True)
    presets = models.TextField(blank=True, null=True)
    icons = models.TextField(blank=True, null=True)
    roles = models.TextField(blank=True, null=True)
    resources = models.TextField(blank=True, null=True)

    class Meta:
        managed = False
        db_table = 'user'
通过使用检查数据库,获得与上面相同的输出

python manage.py inspectdb --database=users
由于我使用一个外部数据库进行用户身份验证,并且我的模型与默认模型有很大不同,因此我使用Django的默认用户模型编写了一个自定义后端,并通过用户的第一次登录将用户复制到该后端

from django.conf import settings
from django.contrib.auth.hashers import check_password
from django.contrib.auth.models import User
from dashboard.models import MyUser

class UserAuthentication(object):

def authenticate(self, username=None, password=None):
    try:
        myuser = MyUser.objects.get(name=username);
    except MyUser.DoesNotExist:
        myuser = None
    if myuser and myuser.password == password:
        try:
            user = User.objects.get(username=username)
        except User.DoesNotExist:
            user = User(username=username, password=password)
            user.save()
        return user
    return None

def get_user(self, user_id, user_name):
    try:
        return User.objects.get(pk=user_id)
    except User.DoesNotExist:
        return None
我甚至不能确认一切正常,因为我在登录时已经被卡住了

Cannot resolve keyword 'name' into field. Choices are: id
我还是一个使用Python和Django的新手。 使用
python2.7.12
Django 1.10.3

感谢您的帮助,谢谢阅读

您可以手动选择要使用的数据库。查看以下文档:

基本上,当您使用
MyUser.objects.using('users').all()查询时,您可以选择一个DB

这能解决您的问题吗?

user=user.objects.get(name=username)
应该是
user=MyUser.objects.get(name=username)