СВЯЗАННЫЕ: get user profile in djangoДжанго: Профиль в 1.9
Выше показано, как получить профиль пользователя, но я читал, что принятый метод ответа осуждается.
Как создать/получить/использовать профиль пользователя в django 1.9?
СВЯЗАННЫЕ: get user profile in djangoДжанго: Профиль в 1.9
Выше показано, как получить профиль пользователя, но я читал, что принятый метод ответа осуждается.
Как создать/получить/использовать профиль пользователя в django 1.9?
models.py
from django.contrib.auth.models import User
from django.db.models.signals import post_save
class UserProfile(models.Model):
user = models.OneToOneField(User)
address = models.TextField()
......
def create_user_profile(sender, instance, created, **kwargs):
if created:
UserProfile.objects.create(user=instance)
post_save.connect(create_user_profile, sender=User)
Приведенный выше код создаст UserProfile запись всякий раз, когда новый пользователь создается на Пользователь стол. Затем вы можете получить доступ к деталям в профиле, как,
address = request.user.profile.address
get_profile()
метод возвратил дополнительную информацию о пользователе. В настоящее время эти данные могут храниться в пользовательской модели пользователя или в отдельной модели, которая связана с пользовательской моделью. Вы можете сделать это на simply adding one2one relation with User model to your custom User model, или by subclassing the AbstructUserBase model.
подклассов Пример пользователя Модель:
class MyUser(AbstractBaseUser):
email = models.EmailField(
verbose_name='email address',
max_length=255,
unique=True,
)
date_of_birth = models.DateField()
...
One2One связь с моделью пользователя, например:
from django.contrib.auth.models import User
class Employee(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
department = models.CharField(max_length=100)
Возможный дубликат [метода Django получить \ _profile() не работает на расширенной модели пользователя] (http://stackoverflow.com/questions/13183264/django-get- profile-method-not-working-on-extended-user-model) – Sayse
Прокрутите вниз до второго ответа на дубликат ... (отказ от ответственности: его мину) – Sayse
@ Запустите работу .userprofile. спасибо – ealeon