РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
131 of 818 menu

Атрибут db_table

Атрибут db_table применяется внутри класса Meta модели Django и позволяет задать пользовательское имя для таблицы в базе данных. По умолчанию Django автоматически генерирует имя таблицы, используя формат appname_modelname, но с помощью db_table вы можете переопределить это поведение. Этот атрибут принимает строковое значение, которое будет использоваться как имя таблицы при выполнении миграций.

Синтаксис

class MyModel(models.Model): # поля модели class Meta: db_table = "custom_table_name"

Пример

Давайте создадим модель Article и укажем для неё имя таблицы blog_posts вместо автоматического myapp_article:

from django.db import models class Article(models.Model): title = models.CharField(max_length=100) content = models.TextField() created_at = models.DateTimeField(auto_now_add=True) class Meta: db_table = "blog_posts" def __str__(self): return self.title

После выполнения команды миграции в базе данных будет создана таблица с именем blog_posts. Вы можете убедиться в этом, подключившись к базе данных и выполнив запрос:

SELECT table_name FROM information_schema.tables WHERE table_name = 'blog_posts';

Результат выполнения кода:

"blog_posts"

Пример

Рассмотрим ситуацию, когда у вас уже существует таблица в базе данных, и вы хотите связать её с моделью Django. В этом случае атрибут db_table позволяет указать существующее имя таблицы:

from django.db import models class Category(models.Model): name = models.CharField(max_length=50) slug = models.SlugField(unique=True) class Meta: db_table = "existing_categories" def __str__(self): return self.name

Теперь модель Category будет работать с таблицей existing_categories. Вы можете выполнить запрос к этой модели и убедиться, что данные извлекаются из указанной таблицы:

from myapp.models import Category categories = Category.objects.all() for category in categories: print(category.name)

Результат выполнения кода:

"Technology" "Health" "Education"

Смотрите также

  • атрибут ordering,
    который задаёт сортировку записей по умолчанию
  • атрибут verbose_name,
    который задаёт читаемое имя модели в единственном числе
  • атрибут verbose_name_plural,
    который задаёт читаемое имя модели во множественном числе
  • атрибут abstract,
    который делает модель абстрактной
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить