all:无法获取< class'django.db.models.query.queryset'>

omqzjyyz  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(287)

我正在使用python3.6和django 2.0.2,并在pycharm中开发一个用户搜索网站。我想使用一个旧的数据库,称为用户,并有数据自动保存从其他来源,我不会改变网站互动过程中的数据库。首先,我在settings.py中配置数据库如下:

DATABASES = {
'default': {
    'ENGINE': 'django.db.backends.sqlite3',
    'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
},
'legacy_db': {
    'ENGINE': 'django.db.backends.mysql',
    'NAME': 'name',
    'USER': 'user',
    'PASSWORD': 'pass',
    'HOST': 'host',
    'PORT': '3306',
}

}
然后我使用inspect db创建模型文件,命令如下:

python manage.py inspectdb --database legacy_db > models.py

生成的models.py如下:

from django.db import models

class User(models.Model):
    username = models.CharField(max_length=16)
    email = models.CharField(max_length=255, blank=True, null=True)
    password = models.CharField(max_length=32)
    create_time = models.DateTimeField(blank=True, null=True)
    id = models.IntegerField(primary_key=True)

    def __str__(self):
        return self.username

    class Meta:
        managed = False
        db_table = 'user'

之后,我使用makemigrations appname和migrate appname来迁移数据库。
然后在my views.py中调用模型,如下所示:

all = User.objects.all()

我不知道如何得到回溯,我只能在调试模式下看到错误信息,错误显示为

all: unable to get repr for <class 'django.db.models.query.QuerySet'>

在密码旁边。我真的在google和stackoverflow上搜索了一下,但是没有找到任何运气。
我是django的新手,这是我第一次自己创建django网站(我在django教程中完成了示例网站(polls)的步骤)。所以任何帮助都会非常感激。

pgvzfuti

pgvzfuti1#

我只是找到了解决方案,错误是由数据库路由引起的,因为我没有添加数据库路由类,所以查询只转到默认数据库。我参考下面的网址来解决这个问题。1django文件
对现有遗留数据库使用django
从django文档中,我也找到了一个简单的方法来解决这个问题,只需更改代码 all = User.objects.all()all=User.objects.using('archived').all() 它将手动设置要在此处使用的数据库。

相关问题