Django как связать пользователей с Usermodel
Здравствуйте, я довольно новичок в Django и пока не понимаю фундаментальных идей о Пользователях. Я смог создать страницу регистрации для создания пользователей, которые отображаются на странице администратора в разделе "Authentication and AUthorization -> Users".
Теперь я хочу, чтобы пользователи вошли в систему и создали свои профили. Они должны добавить некоторую дополнительную информацию, такую как имя, биография, фотография и т.д. Каждый пользователь должен иметь возможность добавлять и видеть свой собственный профиль.
Для этого я создал модель:
class Profile(models.Model):
firstname = models.CharField(max_length=50)
lastname = models.CharField(max_length=50)
bio = models.TextField()
profile_pic = models.ImageField(upload_to="images/")
def __str__(self):
return self.firstname + ' | ' + self.lastname
В моем представлении и html я могу добавить эти данные в модель. Но КАК именно я могу связать эту "Профиль"-модель с отдельным пользователем? Что я здесь упускаю?
Вы можете сделать это через добавление отношения OneToOneField
между Profile
и стандартным User
:
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
firstname = models.CharField(max_length=50)
lastname = models.CharField(max_length=50)
bio = models.TextField()
profile_pic = models.ImageField(upload_to="images/")
def __str__(self):
return self.firstname + ' | ' + self.lastname
Вы можете внести OneToOneField
в AUTH_USER_MODEL
настройку [Django-doc]. Эта настройка содержит строку с квалифицированным именем модели пользователя. Это лучше, чем ссылка на модель User
django.contrib.auth.models.User
, потому что если вы позже создадите пользовательскую модель пользователя, ссылки на эту модель пользователя будут обновлены:
from django.conf import settings
class Profile(models.Model):
user = models.OneToOneField(
settings.AUTH_USER_MODEL,
on_delete=models.CASCADE
)
# …
Для получения дополнительной информации смотрите раздел ссылка на модель пользователя в документации Django.