Python-модель django не извлекает имя таблицы, возвращая вместо этого имя проекта

Я создал проект django и проект python. структура директорий такова

 analysis
        db_router
        models
        settings
        urls
        wsgi
        settings
    compareTemplates
        apps
        models
        tests
        utils
        views

Моя модель выглядит следующим образом

class Plans(models.Model):
    PROJECT_NAME = models.TextField()

class Meta:
    db_table = 'schema.table'  # specify the schema and table name
    managed = False  # Prevent Django from managing the table schema

def __str__(self):
    return self.PROJECT_NAME

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

I ran:
python manage.py shell
from compareTemplate.models import Plans
print(Plans._meta.db_table)

возвращается значение «compareTemplate_plans» Я не ожидал этого, я искал «schema.Table»

Это мое первое настоящее приложение на django, но я не могу понять, почему результатом является имя проекта.

Спасибо

Вам нужно определить Meta класс внутри модели Plans, так:

class Plans(models.Model):
    PROJECT_NAME = models.TextField()

    class Meta:  # 🖘 inside the Plans class
        db_table = 'schema.table'  # specify the schema and table name
        managed = False  # Prevent Django from managing the table schema

    def __str__(self):
        return self.PROJECT_NAME

Note: Normally a Django model is given a singular name [django-antipatterns], so Plan instead of Plans.

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