2012-03-24 3 views
14

Я создаю новое приложение django (а не проект) под названием Bussinesses, а затем добавьте следующий класс к models.py.Как удалить префикс таблицы для модели Django?

class Bussinesses(models.Model): 
    business_email = models.EmailField() 
    password = models.CharField(max_length=20) 
    contact_first_name = models.CharField(max_length=30) 
    contact_last_name = models.CharField(max_length=30) 

, если я использую Bussinesses сразу, Джанго будет иметь доступ к «bussinesses_bussinesses» таблицы в базе данных, это, очевидно, не существует.

Потому что таблица «bussinesses» также используется другим APP, поэтому не может ее переименовать. Я хочу знать, как использовать модель Djano без использования префикса таблицы, и я не хочу напрямую обращаться к необработанному API баз данных.

Большое спасибо.

ответ

35

Просто используйте model meta options.

class Bussinesses(models.Model): 
    business_email = models.EmailField() 
    password = models.CharField(max_length=20) 
    contact_first_name = models.CharField(max_length=30) 
    contact_last_name = models.CharField(max_length=30) 

    class Meta: 
     db_table = "bussinesses" 

BTW предприятия написано с ошибками. Поскольку вы указываете имя таблицы, вам не нужно указывать модель под тем же именем, что и таблица, поэтому, если имя таблицы ошибочно написано, и вы не можете легко ее исправить, вы можете по крайней мере изменить имя ваш класс для надлежащего написания предприятий. Я также избавился бы от плюрализации и сделаю это class Business. Наконец, не редкость при использовании Django или Rails в существующей базе данных необходимо установить собственное имя таблицы для для каждой таблицы.

+1

Добро пожаловать. Совет mgibsonbr в управляемой собственности также является хорошим и может быть полезен при разработке вашего приложения. –

2

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

Кроме того, если вы используете таблицу базы данных, которая уже существует, вы также можете взглянуть на свойство managed. После установки модели на неуправляемый syncdb это не повлияет (если вы, например, сбросили приложение), но вы все равно можете использовать ORM Django в обычном режиме.

Смежные вопросы