Как получить доступ к профилю пользователя в шаблонах Django
Как получить доступ к модели профиля пользователя в шаблоне. У меня в модели профиля related_name установлено значение "profile" с использованием поля OneToOne к User, но когда я использую {{user.profile.id}}, он ничего не возвращает.
Модель профиля
class Profile(models.Model):
user = OneToOneField(User, on_delete=models.CASCADE,
related_name="profile", blank=True, null=True, )
username = models.CharField(max_length=50, blank=True, null=True)
name = models.CharField(max_length=50, null=True, blank=True)
created = models.DateTimeField(
auto_now_add=True, blank=True, null=True)
email = models.EmailField(max_length=254, blank=True, null=True)
location = models.CharField(max_length=50, blank=True, null=True)
id = models.UUIDField(default=uuid.uuid4, unique=True,
primary_key=True, editable=False)
navbar
<a class="nav-link dropdown-toggle" href="{% url 'dashboard' user.profile.id %}">Dashboard<span></a>
По сути, я пытаюсь получить profile.id текущего пользователя, чтобы отобразить приборную панель текущего вошедшего пользователя. Я также пробовал {{request.user.profile.id}} безрезультатно.
Похоже, что вы не сохраняете новый профиль в функции CreateProfile - поэтому вы никогда не сохраняете этот профиль в базе данных, и он теряется, когда функция выходит за рамки....
Кроме того, зачем вы делаете отдельные копии для адреса электронной почты и имени пользователя в профиле, если эта информация уже хранится в объекте пользователя? Вообще, хороший дизайн базы данных заключается в том, чтобы убедиться, что вы храните информацию только в одном месте?
Наконец, уверены ли вы, что хотите, чтобы поле OneToOneField было нулевым? Судя по тому, как настроены сигналы, похоже, что вы хотите, чтобы профиль был тесно связан с объектом User - поэтому не должно быть возможности отделить профиль от его пользователя, установив поле user в None.