Во-первых, эти атрибуты не скрыты. Предполагая, что у вас есть «django.contrib.auth» и «django.contrib.contenttypes» в вашем INSTALLED_APPS
, тогда у вас есть доступ к модели User
, как она определена в вашей ссылке. См. here для документации по использованию/доступу к нему.
Однако, так как вы указали расширенияUser
модель, я ожидаю, что вы хотите добавить некоторые из ваших собственных полей к нему (несмотря на то, что ваш пример registration_date
существует и доступен через myuser.date_joined
).
Более старый, более стабильный и более распространенный способ сделать это аналогичен тому, что у вас есть. Единственное отличие состоит в том, чтобы использовать OneToOneField(User)
вместо ForeignKey(User)
. Это делает отношения двунаправленными и более удобными, заставляя их. Вам нужно убедиться и создать объект Registration
для каждого созданного User
.
Фактически, есть то, что вы хотите в документах для OneToOneField.
from django.db import models
from django.contrib.auth.models import User
class Registration(models.Model):
user = models.OneToOneField(User)
registration_date = models.DateTimeField(auto_now_add=True)
>>> user = User.objects.get(pk=1)
>>> registration = Registration.objects.create(user=user)
>>> user.registration.registration_date
# Should give the current time
>>> user.get_full_name()
# Should also have all those *hidden* attributes linked above
На Django 1.5, вы можете использовать свою собственную модель пользовательского пользователя довольно легко. Документация по этой функции: here. Если вы просто добавляете дополнительные поля, вы можете подклассифицировать модель пользователя и добавить свои собственные поля.
from django.db import models
from django.contrib.auth.models import AbstractUser
class MyUser(AbstractUser):
# We inherit all those nifty things from AbstractUser
registration_date = models.DateTimeField(auto_now_add=True)
Затем включите его в свои settings.py, добавив AUTH_USER_MODEL = 'myapp.MyUser'
. Теперь у нас есть доступ к пользовательской модели немного по-другому
>>> from django.contrib.auth import get_user_model()
>>> Users = get_user_model()
>>> user = Users.objects.get(pk=1)
>>> user.registration_date
# Should give the current time
>>> user.get_full_name()
# Should have those 'hidden' attributes
Все это доступно в соответствии extending и substituting модель пользователя в документации.
Но кто может ввести эти атрибуты из формы * Добавить нового пользователя? Например, вы можете видеть на моем скриншоте, что я могу ввести имя пользователя и пароль, но я хочу использовать имя, адрес электронной почты и другие. Эти атрибуты находятся на моделях по умолчанию, поэтому я не хочу их перезаписывать. – Lucio
@Lucio Я вижу, ваш вопрос о расширении формы администратора django. Взгляните на полный пример внизу [здесь] (https://docs.djangoproject.com/en/1.6/themes/auth/customizing/# extension-user), особенно там, где сказано: «в файле admin.py приложения должен быть указан следующий код». Я обновляю свой пост, когда у меня будет время проверить его. – kalhartt