Django.db.utils.ProgrammingError: (1146, «Таблица „test_db.sensori“ не существует»)

У меня возникла эта проблема, когда я запускаю свой тестовый пример с django и mysql.

когда я запускаю manage.py test, я получаю эту ошибку.

вот мой models.py

from django.db import models


class Sensori(models.Model):
    id = models.IntegerField(db_column='ID', primary_key=True)  # Field name made lowercase.
    tipo = models.CharField(db_column='Tipo', max_length=45, blank=True, null=True)  # Field name made lowercase.
    descrizione = models.CharField(db_column='Descrizione', max_length=255, blank=True, null=True)  # Field name made lowercase.
    accuratezza = models.FloatField(db_column='Accuratezza', blank=True, null=True)  # Field name made lowercase.
    precisione = models.FloatField(db_column='Precisione', blank=True, null=True)  # Field name made lowercase.
    temperaturamin = models.FloatField(db_column='TemperaturaMin', blank=True, null=True)  # Field name made lowercase.
    temperaturamax = models.FloatField(db_column='TemperaturaMax', blank=True, null=True)  # Field name made lowercase.
    tolleranza = models.FloatField(db_column='Tolleranza', blank=True, null=True)  # Field name made lowercase.
    tensioneesercizio = models.FloatField(db_column='TensioneEsercizio', blank=True, null=True)  # Field name made lowercase.
    sensibilita = models.FloatField(db_column='Sensibilita', blank=True, null=True)  # Field name made lowercase.

    class Meta: #database esterno
        managed = False
        db_table = 'Sensori'
        app_label = 'gestioneSensori'

class Letture(models.Model):
    id = models.IntegerField(db_column='ID', primary_key=True)  # Field name made lowercase.
    valore = models.FloatField(db_column='Valore', blank=True, null=True)  # Field name made lowercase.
    unita = models.CharField(db_column='Unita', max_length=10, blank=True, null=True)  # Field name made lowercase.
    datarilevazione = models.DateTimeField(auto_now_add=True, db_column='DataRilevazione')  # Field name made lowercase.
    sensoriid = models.ForeignKey(Sensori, db_column='SensoriID', on_delete=models.CASCADE, null=False)  # Field name made lowercase.

    class Meta:
        managed = False
        db_table = 'Letture'
        app_label = 'gestioneSensori'

Единственное, что я не пробовал, это не использовать mysql, а использовать базу данных django по умолчанию. Сервер работает хорошо, но я не могу выполнить автоматическое тестирование. Не могли бы вы мне помочь?

я не могу найти решение

У вас в опциях Meta указано managed=False, что означает, что для этой модели не будут выполняться операции по созданию, изменению или удалению таблиц базы данных. Проще говоря, Django не будет управлять вашей базой данных.

Установите managed=True и выполните команду python manage.py makemigrations, а также python manage.py migrate.

В docs также говорится:

Для тестов, включающих модели с managed=False, вы должны убедиться, что правильные таблицы созданы в рамках настройки теста.

Смотрите документацию .

Вернуться на верх