В проекте Django проект показывает, что UserInfo, соответствующий запросу, не существует

Вот код views.py. В секции def index я использую модель UserInfo. Здесь информация хранится в связи один к одному, поэтому я пишу (user__pk=user_id)

    from django.shortcuts import render
    from Login_app.forms import UserForm, UserInfoForm
    from Login_app.models import UserInfo
    from django.contrib.auth.models import User
    
    from django.contrib.auth import authenticate, login, logout
    from django.http import HttpResponseRedirect, HttpResponse
    from django.contrib.auth.decorators import login_required
    from django.urls import reverse


def index(request):
    dict={}
    if request.user.is_authenticated:
        current_user = request.user
        user_id = current_user.id
        user_basic_info = User.objects.get(pk=user_id)         
        user_more_info = UserInfo.objects.get(user__pk=user_id)
        dict = {'user_basic_info':user_basic_info, 'user_more_info':user_more_info}
    
    return render(request, 'Login_app/index.html', context=dict)

Вот код models.py, где я создаю модель UserInfo. Она хранит пользователя, facebook_id, profile_pc.

from django.db import models
from django.contrib.auth.models import User

# Create your models here.


class UserInfo(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)

    facebook_id = models.URLField(blank=True)

    profile_pic = models.ImageField(upload_to = 'profile_pics', blank=True)


    def __str__(self):
        return self.user.username

Убедитесь, что вы вставили данные в таблицу UserInfo. Для получения даты, связанной с полем один к одному с таблицей User, вам не нужно извлекать идентификатор пользователя явно. Следующий код должен сделать это-

current_user = request.user
user_more_info= UserInfo.objects.filter(user=current_user).get()

Более того, если у вас есть поле с именем 'full_name' в модели User, вы можете получить к нему прямой доступ -

user_full_name=current_user.full_name
Вернуться на верх