Django: как глобально изменить имена таблиц?
Я знаю, что могу изменить имя таблицы в модели с помощью атрибута db_table
, как объясняется в документе .
Однако, что если я хочу сделать это глобально? Допустим, я хочу, чтобы все мои таблицы имели вид:
db_table = f"table_{{model_name}}"
Есть ли какая-нибудь настройка для этого? В противном случае, я думаю, я мог бы использовать миксин, от которого можно было бы наследоваться. Однако, вся цель сделать это, чтобы НЕ думать об именовании таблиц, когда любой разработчик будет добавлять новую модель.
После прочтения этого выпуска, кажется, что сопровождающие даже не подумали добавить эту функцию, так как не понимали необходимости, что для меня довольно очевидно :/
Есть идеи? Спасибо.
По умолчанию таблицы базы данных именуются как db_table = f"{app_label}_{model_name}"
, и вы можете переписать их, как предлагает hedde-van-der-heide, создав абстрактную базовую модель и подклассифицировав их в своих моделях, как
from django.db import models
class BaseModel(models.Model):
class Meta:
abstract = True
db_table = f"table_{model_name}"
class NewModel(BaseModel):
name = models.CharField(max_length=128)
def __str__(self):
return str(self.name)