all: невозможно получить repr для <class 'django.db.models.query.QuerySet'> - PullRequest
0 голосов
/ 02 мая 2018

Я использую 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 и имя приложения migrate для переноса базы данных.

Затем я вызываю модель в моем views.py следующим образом:

all = User.objects.all()

Я не знаю, как получить трассировку, я могу видеть только информацию об ошибке в режиме отладки, ошибка отображается как

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

рядом с кодом. Я действительно искал в Google и StackOverflow, но мне не повезло.

Я новичок в django, и это мой первый раз, когда я сам создаю сайт django (я прошел шаги по примеру сайта (опросы) в руководствах по django). Так что любая помощь будет очень признательна.

1 Ответ

0 голосов
/ 02 мая 2018

Я просто нахожу решение, ошибка вызвана маршрутизацией базы данных, потому что я не добавил класс маршрутизации базы данных, поэтому запрос просто отправляется в базу данных по умолчанию. И я обращаюсь к URL-адресам ниже, чтобы решить эту проблему. 1. документ Джанго

  1. ИСПОЛЬЗОВАНИЕ DJANGO С СУЩЕСТВУЮЩЕЙ БАЗОЙ ЛЕГАЦИИ

И из документа django я также нашел простой способ решения этой проблемы, просто изменив код all = User.objects.all() на all=User.objects.using('archived').all(), который вручную настроит базу данных для использования здесь.

...