2017-01-26 4 views

ответ

1

Первый: multi table inheritance. (Я полагаю, вы на самом деле занимаетесь django.contrib.auth.models.User здесь). Ваша новая модель пользователя будет иметь все поле, которое определено в пользовательской модели django. Это управляется джанго, неявно создающим OneToOneField на вашей модели.

Во-вторых, вы сами создаете OneToOneField. Теперь поля модели django.contrib.auth.model.User автоматически не отображаются как части вашей собственной модели. Вы все еще можете получить доступ к ним, как

myinstance.user.parent_field 

Сказав все это, для варианта 1 you should inherit from an abstract base class, а не непосредственно из модели пользователя.

class MyUser(AbstractBaseUser): 
    ... 
+0

Удивительный, спасибо! И, да, первый пример имел псевдоним импорта из django.contrib.auth.models.User как Authuser, который я пропустил. Почему лучше использовать абстрактный базовый класс? – bufferoverEB2A

+1

Если вы не используете абстрактный базовый класс, в базе данных вместо двух будут созданы две таблицы. – e4c5

+0

Спасибо! Хорошего дня! – bufferoverEB2A