2015-02-25 3 views
0

Глупый вопрос времени. В Django, если вы хотите, чтобы указать имя таблицы А модель, вы будете делать это:Переименовать таблицу auth_user в Django?

class MyModel(models.Model): 
    ... 
    class Meta: 
     db_table = 'mymodel' 

Можно ли изменить имя таблицы AUTH_USER Джанго по умолчанию аналогичным образом? Я всегда выполняю ручные запросы против пользовательской таблицы, и было бы намного быстрее вводить «пользователь», чем «auth_user». Я просмотрел документы Django и сделал некоторые поисковые запросы в Интернете, и я не видел, чтобы кто-либо обращался к этому вопросу.

Спасибо!

+0

Это может быть возможным путем подкласса «Пользователь» с вашим пользовательским классом, а затем использовать его как пользовательскую модель пользователя: https://docs.djangoproject.com/en/dev/topics/auth/customizing/#specifying-a- custom-user-model – Selcuk

+0

Да, за исключением того, что вы должны подклассифицировать AbstractUser, а не User. –

+0

Почему бы и нет? Плакат хочет использовать все функции, которые имеет пользователь 'User', только изменить имя таблицы. – Selcuk

ответ

0

И Selcuk, и Daniel Roseman дали вам хорошие ответы. Вы можете расширить либо один из классов User или AbstractUser, с небольшой разницей, что для последнего вам также потребуется добавить swappable атрибут в ваш класс Meta.

Вот пример:

from django.contrib.auth.models import AbstractUser # (or simply User) 

class MyUser(AbstractUser): 

    class Meta: 
     swappable = 'AUTH_USER_MODEL' # ONLY for AbstractUser 
     db_table = 'user' 

Однако, обратите внимание на использование «пользователь» в качестве имени таблицы, потому что есть базы данных, где это зарезервированное слово !!!

Удачи.

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