В моделях django, как сделать так, чтобы все имена таблиц не имели ярлыка приложения? - PullRequest
1 голос
/ 11 июня 2010

У меня есть база данных, которая уже использовалась другими приложениями, прежде чем я начал писать для нее веб-интерфейс с django. Имена таблиц соответствуют простым стандартам именования, поэтому модель django Customer должна отображаться в таблицу "customer" в БД. В то же время я добавляю новые таблицы / модели. Поскольку я нахожу обременительным использование app_customer каждый раз, когда мне нужно написать запрос (ORM django для них определенно недостаточно) в других приложениях, и я не хочу переименовывать существующие таблицы, каков наилучший способ сделать все модели в моем приложении django используют таблицы без applabel_, кроме добавления мета-класса с db_table = для каждой модели?

Есть ли причина, по которой я не должен этого делать? У меня есть только одно веб-приложение, которому нужен доступ к этой базе данных, все остальное не использует модели django.

Ответы [ 2 ]

4 голосов
/ 11 июня 2010

Вы можете добавить класс Meta в свой класс модели и в нем указать имя вашей таблицы как db_table.

В документе Django :

class Meta:
    db_table = 'my_author_table'
1 голос
/ 11 июня 2010

Это может работать (я не проверял)

class CustomModel(Model):
    def __init__(self, *args, **kwargs):
        self._meta.db_table = self.__class_.__name__.lower()
        super(CustomModel, self).__init__(*args, **kwargs)

И тогда вы наследуете все свои модели из CustomModel.Хотя я не уверен, что это стоит того, чтобы просто не указывать его в Meta.

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