Django OperationalError: такого столбца нет - PullRequest
1 голос
/ 24 февраля 2020

Я пытаюсь прочитать значения из базы данных sqlite, которую я добавил в свой проект Django, но она не работает. Я провел тест в оболочке Python, и все, что он вернул, было следующей ошибкой при попытке просмотреть данные:

from myapp.models import my_data
my_data.objects.all()

OperationalError: нет такого столбца: my_table_name.id

Вот так выглядит мой файл models.py:

class my_data(models.Model):
    status = models.TextField(db_column='STATUS', blank=True, null=True)
    name_1 = models.TextField(db_column='NAME_1', blank=True, null=True) 
    name_2 = models.TextField(db_column='NAME_2', blank=True, null=True)  
    dep = models.IntegerField(db_column='DEP', blank=True, null=True) 
    name_reg = models.TextField(db_column='NAME_REG', blank=True, null=True)
    reg = models.IntegerField(db_column='REG', blank=True, null=True)
    name_com = models.TextField(db_column='NAME_COM', blank=True, null=True)
    avgp = models.IntegerField(db_column='AVGP', blank=True, null=True)

    class Meta:
        managed = True
        db_table = 'my_table_name'

Мой файл settings.py:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    },
    'my_table_name': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db_my_table_name.sqlite3'),
    }
}

Кроме того, я выполнил python manage.py makemigrations и python manage.py migrate команд.

Есть идеи, что я делаю не так?

1 Ответ

0 голосов
/ 25 февраля 2020

Я пишу это в соответствии с этим комментарием, поскольку вы сказали, что он работает:

Добавьте поле идентификатора в my_data модель:

AutoField like: id = models.AutoField(primary_key=True)

Совет: В django названия моделей должны соответствовать соглашению CamelCase.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...