Получение одного строкового атрибута из расширенной модели моего пользователя
я думаю, что мой вопрос простой, но я новичок и не могу в нем разобраться.
У меня есть Django модель пользователя по умолчанию и моя расширенная модель пользователя, и в моем views.py я просто хочу получить адрес моего зарегистрированного пользователя как одну строку, я пытался использовать различные способы, используя (UserProfile.objects.values/filter/get etc...), но я просто получаю ошибки.
Спасибо за ваше время!
Models.py
class UserProfile(models.Model):
user = models.OneToOneField(User, null=True, on_delete=models.CASCADE)
profile_pic = models.ImageField(null=True, blank=True, upload_to="profile_imgs")
address = models.CharField(null=True, blank=True, max_length=150)
curp = models.CharField(null=True, blank=True, max_length=18)
Views.py
@login_required(login_url='log')
def test(request):
address = "answer"
context = {
'address': address,
}
return render(request, "test.html", context)
Вы можете получить адрес из экземпляра пользователя запроса, но вам нужно добавить related_name
к полю user в UserProfile
модели.
смотрите ниже:
user = models.OneToOneField(User, null=True, on_delete=models.CASCADE, related_name='user_profile')
после этого извлекаем адрес пользователя запроса в функции представления следующим образом:
@login_required(login_url='log')
def test(request):
context = {
'address': request.user.user_profile.address,
}
return render(request, "test.html", context)