Если у вас только один тип пользователя и используете Django 1.5+, я бы рекомендовал воспользоваться новым AbstractUser. Extending Django's default user
В качестве примера, где вы хотите добавить дату рождения и любимого цвета:
#myusers/models.py
from django.contrib.auth.models import AbstractUser
from django.db import models
class MyUser(AbstractUser):
dob = models.DateField()
favorite_color = models.CharField(max_length=32, default='Blue')
Если вам нужно больше гибкости вы можете продлить AbstractBaseUser вместо AbstractUser, но для большинства основных случаев должны только AbstractUser.
Также обратите внимание, что в любом случае вам понадобится reference your user model by using settings.AUTH_USER_MODEL.
Используя из примера выше, и предполагая, что приложение было определено в называется myusers
:
#settings.py
AUTH_USER_MODEL = 'myusers.MyUser'
метод вы упоминаете о создании модели студента с поля один-к-одному с моделью пользователя все еще работает , но не так чист (есть еще случаи, когда это имеет смысл, если у вас есть несколько пользователей).
Я обычно не люблю ссылаться на книги в ответах, но я обнаружил, что Two Scoops of Django's, Глава 16 на модели пользователя дал более четкое объяснение того, где различные варианты подходят, чем текущая версия онлайна Джанго Docs. Книга в целом очень полезная интро для Django и была написана на основе 1.5. Вам нужно будет купить книгу или найти кого-то, у кого она есть, хотя ... (FYI: у меня нет денег, рекомендующих это).
Вы также мог бы взглянуть на этом SO вопроса/ответ: https://stackoverflow.com/a/14104748/307293
Что не так чисто? –
Создает дополнительную таблицу в базе данных. Если вы часто ссылаетесь на такие вещи, как имя и фамилия, а также некоторые ваши пользовательские данные, которые требуют дополнительного JOIN каждый раз. – Jacinda
Jacinda - по совпадению я купил книгу раньше сегодня! Я еще не получил этого, но, глядя на эту ссылку, они дают три хороших варианта: привязка назад к связанной модели, подклассу AbstractUser или подклассу AbstractBaseClassUser. К сожалению, я использую стороннее приложение, которое я хочу подкласса, любые идеи о том, как это сделать? – Joker