【问题标题】:all: unable to get repr for <class 'django.db.models.query.QuerySet'>全部:无法获得 <class 'django.db.models.query.QuerySet'> 的代表
【发布时间】:2018-10-12 01:00:13
【问题描述】:

我正在使用 Python3.6 和 django 2.0.2,并正在开发一个用于在 Pycharm 中进行用户搜索的网站。我想使用一个名为 User 的遗留数据库,并从其他来源自动保存数据,我不会在网站交互期间更改数据库。首先,我在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 来迁移数据库。

然后我在views.py中调用模型如下:

all = User.objects.all()

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

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

在代码旁边。我确实在 Google 和 StackOverflow 中进行了搜索,但没有运气。

我是 django 新手,这是我第一次自己创建一个 django 网站(我在 django 教程中逐步完成了示例网站(民意调查)的步骤)。因此,我们将不胜感激。

【问题讨论】:

    标签: mysql django django-queryset


    【解决方案1】:

    我刚刚找到解决办法,错误是数据库路由引起的,因为我没有添加数据库路由类,所以查询到了默认数据库。我参考下面的网址来解决这个问题。 1.django document

    1. USING DJANGO WITH AN EXISTING LEGACY DATABASE

    从 django 文档中,我也找到了解决这个问题的简单方法,只需将代码 all = User.objects.all() 更改为 all=User.objects.using('archived').all() 即可在此处手动设置要使用的数据库。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-11-06
      • 2018-05-30
      • 2012-11-03
      • 1970-01-01
      • 2018-12-03
      • 2016-08-11
      • 1970-01-01
      • 2020-12-10
      相关资源
      最近更新 更多