Получение одного строкового атрибута из расширенной модели моего пользователя

я думаю, что мой вопрос простой, но я новичок и не могу в нем разобраться.

У меня есть 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)
Вернуться на верх